瀏覽代碼

fix: non existent chat page issue

Timothy J. Baek 1 年之前
父節點
當前提交
0c30a08596
共有 3 個文件被更改,包括 46 次插入33 次删除
  1. 8 1
      backend/apps/web/routers/chats.py
  2. 1 0
      backend/constants.py
  3. 37 32
      src/routes/(app)/c/[id]/+page.svelte

+ 8 - 1
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,

+ 1 - 0
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."

+ 37 - 32
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();
+		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();
+				if (messages.length > 0) {
+					history.messages[messages.at(-1).id].done = true;
+				}
+				await tick();
 
-			return true;
-		} else {
-			return null;
+				return true;
+			} else {
+				return null;
+			}
 		}
 	};