diff --git a/backend/apps/web/routers/chats.py b/backend/apps/web/routers/chats.py index ccb3a32b..42125102 100644 --- a/backend/apps/web/routers/chats.py +++ b/backend/apps/web/routers/chats.py @@ -75,7 +75,14 @@ async def get_chat_by_id(id: str, cred=Depends(bearer_scheme)): if user: chat = Chats.get_chat_by_id_and_user_id(id, user.id) - return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)}) + + if chat: + return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)}) + else: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.NOT_FOUND, + ) else: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, diff --git a/backend/constants.py b/backend/constants.py index 8301ea0b..e5b7b1e4 100644 --- a/backend/constants.py +++ b/backend/constants.py @@ -26,5 +26,6 @@ class ERROR_MESSAGES(str, Enum): ACTION_PROHIBITED = ( "The requested action has been restricted as a security measure." ) + NOT_FOUND = "We could not find what you're looking for :/" USER_NOT_FOUND = "We could not find what you're looking for :/" MALICIOUS = "Unusual activities detected, please try again in a few minutes." diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index efa5ee1f..98b16b92 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -71,40 +71,45 @@ const loadChat = async () => { await chatId.set($page.params.id); - chat = await getChatById(localStorage.token, $chatId); - - const chatContent = chat.chat; - - if (chatContent) { - console.log(chatContent); - - selectedModels = - (chatContent?.models ?? undefined) !== undefined - ? chatContent.models - : [chatContent.model ?? '']; - history = - (chatContent?.history ?? undefined) !== undefined - ? chatContent.history - : convertMessagesToHistory(chatContent.messages); - title = chatContent.title; - - let _settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); - await settings.set({ - ..._settings, - system: chatContent.system ?? _settings.system, - options: chatContent.options ?? _settings.options - }); - autoScroll = true; - await tick(); - - if (messages.length > 0) { - history.messages[messages.at(-1).id].done = true; - } - await tick(); - - return true; - } else { + chat = await getChatById(localStorage.token, $chatId).catch(async (error) => { + await goto('/'); return null; + }); + + if (chat) { + const chatContent = chat.chat; + + if (chatContent) { + console.log(chatContent); + + selectedModels = + (chatContent?.models ?? undefined) !== undefined + ? chatContent.models + : [chatContent.model ?? '']; + history = + (chatContent?.history ?? undefined) !== undefined + ? chatContent.history + : convertMessagesToHistory(chatContent.messages); + title = chatContent.title; + + let _settings = JSON.parse(localStorage.getItem('settings') ?? '{}'); + await settings.set({ + ..._settings, + system: chatContent.system ?? _settings.system, + options: chatContent.options ?? _settings.options + }); + autoScroll = true; + await tick(); + + if (messages.length > 0) { + history.messages[messages.at(-1).id].done = true; + } + await tick(); + + return true; + } else { + return null; + } } };