"use client"; import { ChatBubbleIcon, PaperPlaneIcon } from "@radix-ui/react-icons"; import { useLeftMenuStore } from "_store/leftMenuStore"; import { useSession } from "next-auth/react"; import { Fragment, useEffect, useState } from "react"; import { cn } from "_helpers/cn"; import { asPublicUser } from "@repo/db"; import { useQuery } from "@tanstack/react-query"; import { getConnectedUserAPI } from "_querys/connected-user"; export const Chat = () => { const { setReportTabOpen, chatOpen, setChatOpen, sendMessage, addChat, chats, setOwnId, selectedChat, setSelectedChat, setChatNotification, } = useLeftMenuStore(); const [sending, setSending] = useState(false); const session = useSession(); const [addTabValue, setAddTabValue] = useState("default"); const [message, setMessage] = useState(""); const { data: connectedUser } = useQuery({ queryKey: ["connected-users"], queryFn: async () => { const user = await getConnectedUserAPI(); return user.filter((u) => u.userId !== session.data?.user.id); }, refetchInterval: 10000, refetchOnWindowFocus: true, }); useEffect(() => { if (!session.data?.user.id) return; setOwnId(session.data.user.id); }, [session, setOwnId]); return (
{Object.values(chats).some((c) => c.notification) && ( )}
{chatOpen && (

Chat

{Object.keys(chats).map((userId) => { const chat = chats[userId]; if (!chat) return null; return ( `} checked={selectedChat === userId} onClick={() => { setChatNotification(userId, false); }} onChange={(e) => { if (e.target.checked) { // Handle tab change setSelectedChat(userId); } }} />
{chat.messages.map((chatMessage) => { const isSender = chatMessage.senderId === session.data?.user.id; return (

{new Date(chatMessage.timestamp).toLocaleTimeString()}

{chatMessage.text}
); })} {!chat.messages.length && (

Noch keine Nachrichten

)}
); })}
)}
); };