From f98a0f99c9ccd6abfd7e65722f3f785278b67a81 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Wed, 15 Oct 2025 11:49:34 +0200 Subject: [PATCH] Message caching with last message --- src/app/chat/[id]/page.tsx | 4 ++-- src/app/chat/page.tsx | 4 ++-- src/app/server/[ip]/page.tsx | 16 +++++++++++----- src/components/Sidebar.tsx | 6 +++--- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/app/chat/[id]/page.tsx b/src/app/chat/[id]/page.tsx index a4715d4..470eb32 100644 --- a/src/app/chat/[id]/page.tsx +++ b/src/app/chat/[id]/page.tsx @@ -16,13 +16,13 @@ export default function DMs() { const { id } = useParams<{ id: string }>(); const wsRef = useRef(null); const messages = useMessages((s) => s.messages); - const setMessages = useMessages((s) => s.setMessages); + const addMessage = useMessages((s) => s.addMessage); const [userList, setUserList] = useState>({}); const [user, setUser] = useState(); return ( (null); const [userList, setUserList] = useState>({}); const messages = useMessages((s) => s.messages); - const setMessages = useMessages((s) => s.setMessages); + const addMessage = useMessages((s) => s.addMessage); return ( diff --git a/src/app/server/[ip]/page.tsx b/src/app/server/[ip]/page.tsx index 1d2dde2..cf89d1f 100644 --- a/src/app/server/[ip]/page.tsx +++ b/src/app/server/[ip]/page.tsx @@ -8,26 +8,32 @@ import { Message, Server as ServerType } from "@/types/types"; import { UserProfile } from "@/hooks/get-user"; import { StringMap } from "@/types/typeUtils"; import auth from "@/lib/auth"; +import { useMessages } from "@/hooks/use-messages"; export default function Server() { const { ip } = useParams<{ ip: string }>(); const wsServerRef = useRef(null); const wsNodeRef = useRef(null); const [server, setServer] = useState(); - const [messages, setMessages] = useState([]); const [userList, setUserList] = useState>({}); + const messages = useMessages((s) => s.messages); + const addMessage = useMessages((s) => s.addMessage); useEffect(() => { if (!ip) return; - auth(ip, wsServerRef, setServer, setMessages, (m) => { - setMessages((prev) => [...prev, m]); - }); + auth( + ip, + wsServerRef, + setServer, + (ms) => ms.forEach(addMessage), + addMessage + ); }, [ip]); return ( {}} userList={userList} setUserList={setUserList} server={server} diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 04733b5..ce1b29d 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -40,15 +40,15 @@ export default function AppSidebar({ children, chatWith, wsRef, - setMessages, onNewMessage, setUser, server, messages, + addMessage, }: Readonly<{ wsRef: React.RefObject; + addMessage: (msg: Message) => void; messages?: Message[]; - setMessages: (m: Message[]) => void; onNewMessage?: (msg: Message) => void; userList: StringMap; setUserList: React.Dispatch>>; @@ -79,7 +79,7 @@ export default function AppSidebar({ user?.node_address, wsRef, () => {}, - setMessages, + (ms) => ms.forEach(addMessage), (m) => { if (m.from !== chatWith && m.from !== user.id) toast(