From f22a187148272494c2767a57efb122b06e475745 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Wed, 15 Apr 2026 01:31:29 -0600 Subject: [PATCH] always show chat sidebar --- web/app/chat/page.js | 81 +++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/web/app/chat/page.js b/web/app/chat/page.js index 0bc1bf26..74a2834e 100644 --- a/web/app/chat/page.js +++ b/web/app/chat/page.js @@ -22,7 +22,6 @@ function ChatPage() { const [error, setError] = useState(null); const [conversations, setConversations] = useState([]); const [convsLoading, setConvsLoading] = useState(false); - const [showSidebar, setShowSidebar] = useState(false); const [selectedFile, setSelectedFile] = useState(null); const messagesEndRef = useRef(null); @@ -172,13 +171,17 @@ function ChatPage() { } if (!convId) { + await fetchConversations(); setLoadingConv(false); setConversation(null); return; } - await fetchConversation(convId); - await fetchMessages(convId); + await Promise.all([ + fetchConversation(convId), + fetchMessages(convId), + fetchConversations(), + ]); setLoadingConv(false); startPolling(convId); } @@ -188,11 +191,7 @@ function ChatPage() { return () => { if (pollRef.current) clearInterval(pollRef.current); }; - }, [token, authLoading, conversationIdParam, fetchConversation, fetchMessages, startPolling]); - - useEffect(() => { - if (showSidebar && token) fetchConversations(); - }, [showSidebar, token, fetchConversations]); + }, [token, authLoading, conversationIdParam, fetchConversation, fetchMessages, startPolling, fetchConversations]); async function handleSend(e) { e?.preventDefault(); @@ -334,7 +333,7 @@ function ChatPage() { }); setConversation(conv); - await fetchMessages(conv.id); + await Promise.all([fetchMessages(conv.id), fetchConversations()]); setLoadingConv(false); startPolling(conv.id); router.replace(`/chat?id=${conv.id}`, { scroll: false }); @@ -354,7 +353,26 @@ function ChatPage() { setLoadingConv(false); startPolling(convId); router.replace(`/chat?id=${convId}`, { scroll: false }); - setShowSidebar(false); + } + + async function handleCloseConversation() { + if (!conversation || conversation.status === "CLOSED") return; + try { + const res = await fetch(`${API_BASE}/api/v1/chat/conversations/${conversation.id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ status: "CLOSED" }), + }); + if (!res.ok) return; + const updated = await res.json(); + setConversation(updated); + await fetchConversations(); + } catch { + // silent + } } if (authLoading || loadingConv) { @@ -392,11 +410,9 @@ function ChatPage() {
- {showSidebar && (
All Conversations -
{convsLoading &&

Loading...

} {!convsLoading && conversations.length === 0 && ( @@ -422,12 +438,11 @@ function ChatPage() { ))}
-
- )} -
+
{!conversation ? (
💬
@@ -437,9 +452,6 @@ function ChatPage() { - @@ -460,12 +472,15 @@ function ChatPage() {
- + {!isClosed && ( + + )}