From f9b6f55097e7b01bbc411b253fbdf9881116ea07 Mon Sep 17 00:00:00 2001 From: omgate234 Date: Wed, 24 Sep 2025 01:21:40 +0530 Subject: [PATCH 1/2] feat: join session rooms for reconnectivity --- src/components/hooks/useVideoDBAgent.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/hooks/useVideoDBAgent.js b/src/components/hooks/useVideoDBAgent.js index 4a4603b..8164512 100644 --- a/src/components/hooks/useVideoDBAgent.js +++ b/src/components/hooks/useVideoDBAgent.js @@ -51,6 +51,13 @@ export function useVideoDBAgent(config) { const activeCollectionImages = ref(null); const activeImageData = ref(null); + const setActiveSession = (sessionId) => { + session.sessionId = sessionId; + if (session.isConnected && session.sessionId) { + socket.emit("join_session", { session_id: session.sessionId }); + } + }; + const fetchSession = async (sessionId) => fetchData(httpUrl, `/session/${sessionId}`); const fetchSessions = async () => fetchData(httpUrl, "/session"); @@ -274,7 +281,7 @@ export function useVideoDBAgent(config) { fetchPastMessages = false; } if (debug) console.log("debug :videodb-chat session loading", sessionId); - session.sessionId = sessionId; + setActiveSession(sessionId); if (!fetchPastMessages) { Object.keys(conversations).forEach((key) => delete conversations[key]); } else { @@ -575,6 +582,9 @@ export function useVideoDBAgent(config) { socket.on("connect", () => { if (debug) console.log("debug :videodb-chat socket emmited connect"); session.isConnected = true; + if (session.sessionId) { + socket.emit("join_session", { session_id: session.sessionId }); + } }); socket.on("chat", (event) => { @@ -609,6 +619,14 @@ export function useVideoDBAgent(config) { } }); + if (typeof document !== "undefined" && typeof window !== "undefined") { + document.addEventListener("visibilitychange", () => { + if (!document.hidden && session.sessionId && session.isConnected) { + socket.emit("join_session", { session_id: session.sessionId }); + } + }); + } + return { ...toRefs(session), configStatus, From eb0a35a6402476a78ede47cad64a598605857583 Mon Sep 17 00:00:00 2001 From: omgate234 Date: Wed, 24 Sep 2025 17:03:00 +0530 Subject: [PATCH 2/2] feat: recieve both user and assitant messages --- src/components/hooks/useVideoDBAgent.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/hooks/useVideoDBAgent.js b/src/components/hooks/useVideoDBAgent.js index 8164512..9bf0c7e 100644 --- a/src/components/hooks/useVideoDBAgent.js +++ b/src/components/hooks/useVideoDBAgent.js @@ -573,7 +573,6 @@ export function useVideoDBAgent(config) { ...message, }; - conversations[convId] = { [msgId]: _message }; socket.emit("chat", _message); addClientLoadingMessage(convId); } @@ -588,15 +587,21 @@ export function useVideoDBAgent(config) { }); socket.on("chat", (event) => { - if (debug) console.log("debug :videodb-chat socket emmited chat", event); + if (debug) console.log("debug :videodb-chat socket received chat", event); if (session.sessionId !== event.session_id) return; + if (session.isConnected) { const { conv_id: convId, msg_id: msgId } = event; if (!conversations[convId]) { conversations[convId] = {}; } - conversations[convId][msgId] = { sender: "assistant", ...event }; - removeClientLoadingMessage(convId); + + const sender = event.msg_type === "input" ? "user" : "assistant"; + conversations[convId][msgId] = { sender, ...event }; + + if (event.msg_type === "output") { + removeClientLoadingMessage(convId); + } } });