add
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { createPortal } from 'react-dom';
|
||||
import { apiChat, type ChatConversation, type ChatMessage, type ChatStudent } from '../api';
|
||||
import { type StaffChatOpenDetail } from '../chatEvents';
|
||||
import { useAuth } from '../auth/AuthContext';
|
||||
import { onStaffChatMessage, playChatSound } from '../hooks/useStaffChatSocket';
|
||||
|
||||
@@ -82,6 +83,26 @@ export function ChatWidget() {
|
||||
return () => { off(); };
|
||||
}, [handleIncoming]);
|
||||
|
||||
useEffect(() => {
|
||||
const onOpen = (e: Event) => {
|
||||
const detail = (e as CustomEvent<StaffChatOpenDetail>).detail;
|
||||
if (!detail?.studentRkId) return;
|
||||
setOpen(true);
|
||||
setActive({
|
||||
studentRkId: detail.studentRkId,
|
||||
fullName: detail.fullName,
|
||||
studentCode: detail.studentCode,
|
||||
email: detail.email || '',
|
||||
online: false,
|
||||
});
|
||||
setPickerOpen(false);
|
||||
setQuery('');
|
||||
loadMessages(detail.studentRkId).catch(console.error);
|
||||
};
|
||||
window.addEventListener('staff-chat:open', onOpen);
|
||||
return () => window.removeEventListener('staff-chat:open', onOpen);
|
||||
}, [loadMessages]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!staff?.id) return;
|
||||
loadConversations().catch(console.error);
|
||||
|
||||
Reference in New Issue
Block a user