diff --git a/apps/dispatch/app/(dispatch)/_components/navbar/_components/Chat.tsx b/apps/dispatch/app/(dispatch)/_components/navbar/_components/Chat.tsx index 316fc6db..612d9156 100644 --- a/apps/dispatch/app/(dispatch)/_components/navbar/_components/Chat.tsx +++ b/apps/dispatch/app/(dispatch)/_components/navbar/_components/Chat.tsx @@ -8,16 +8,22 @@ import { getDispatcher, } from "(dispatch)/_components/navbar/_components/action"; import { cn } from "helpers/cn"; -import { socket } from "(dispatch)/socket"; -import { ChatMessage } from "@repo/db"; export const Chat = () => { - const { sendMessage, addChat, chats, addMessage, setOwnId } = useChatStore(); + const { + chatOpen, + setChatOpen, + sendMessage, + addChat, + chats, + setOwnId, + selectedChat, + setSelectedChat, + setChatNotification, + } = useChatStore(); const [sending, setSending] = useState(false); const session = useSession(); - const [dropdownOpen, setDropdownOpen] = useState(false); const [addTabValue, setAddTabValue] = useState(""); - const [selectedTab, setSelectedTab] = useState(null); const [message, setMessage] = useState(""); const [dispatcher, setDispatcher] = useState(null); const timeout = useRef(null); @@ -30,39 +36,54 @@ export const Chat = () => { useEffect(() => { const fetchDispatcher = async () => { const data = await getDispatcher(); - setDispatcher(data); - setAddTabValue(data[0]?.userId || ""); + if (data) { + const filteredDispatcher = data.filter((user) => { + return ( + user.userId !== session.data?.user.id && + !Object.keys(chats).includes(user.userId) + ); + }); + setDispatcher(filteredDispatcher); + } + if (!addTabValue && data[0]) setAddTabValue(data[0].userId); }; timeout.current = setInterval(() => { fetchDispatcher(); - }, 10000); + }, 1000); fetchDispatcher(); return () => { if (timeout.current) { clearInterval(timeout.current); + timeout.current = null; + console.log("cleared"); } }; - }, []); + }, [addTabValue, chats]); return (
- - {dropdownOpen && ( +
+ {Object.values(chats).some((c) => c.notification) && ( + + )} + +
+ {chatOpen && (
{ value={addTabValue} onChange={(e) => setAddTabValue(e.target.value)} > - + {!dispatcher?.length && ( + + )} {dispatcher?.map((user) => (