This commit is contained in:
2026-06-30 11:51:34 +07:00
parent fd08bee7ab
commit 0abf48ea2d
28 changed files with 3514 additions and 37 deletions

View File

@@ -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);