From 5bdcb4e69c1c2f6c26564e3a97fcac41ba1761d6 Mon Sep 17 00:00:00 2001 From: sabaimran Date: Thu, 4 Apr 2024 10:30:46 +0530 Subject: [PATCH] Wait for location data to be returned before setting up the socket connection --- src/khoj/interface/web/chat.html | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/khoj/interface/web/chat.html b/src/khoj/interface/web/chat.html index ac403a3f..6e049718 100644 --- a/src/khoj/interface/web/chat.html +++ b/src/khoj/interface/web/chat.html @@ -54,6 +54,7 @@ To get started, just start typing below. You can also type / to see a list of co let region = null; let city = null; let countryName = null; + let waitingForLocation = true; let websocketState = { newResponseText: null, @@ -73,6 +74,11 @@ To get started, just start typing below. You can also type / to see a list of co .catch(err => { console.log(err); return; + }) + .finally(() => { + console.debug("Region:", region, "City:", city, "Country:", countryName); + waitingForLocation = false; + setupWebSocket(); }); function formatDate(date) { @@ -855,6 +861,11 @@ To get started, just start typing below. You can also type / to see a list of co let wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; let webSocketUrl = `${wsProtocol}//${window.location.host}/api/chat/ws`; + if (waitingForLocation) { + console.debug("Waiting for location data to be fetched. Will setup WebSocket once location data is available."); + return; + } + websocketState = { newResponseText: null, newResponseElement: null, @@ -877,7 +888,7 @@ To get started, just start typing below. You can also type / to see a list of co if (chatBody.dataset.conversationId) { webSocketUrl += `?conversation_id=${chatBody.dataset.conversationId}`; - webSocketUrl += `®ion=${region}&city=${city}&country=${countryName}`; + webSocketUrl += (!!region && !!city && !!countryName) ? `®ion=${region}&city=${city}&country=${countryName}` : ''; websocket = new WebSocket(webSocketUrl); websocket.onmessage = function(event) {