Pārlūkot izejas kodu

fix: shared chat not updating

Timothy Jaeryang Baek 5 mēneši atpakaļ
vecāks
revīzija
dc8c85c33d

+ 13 - 6
backend/open_webui/apps/webui/models/chats.py

@@ -203,15 +203,22 @@ class ChatTable:
     def update_shared_chat_by_chat_id(self, chat_id: str) -> Optional[ChatModel]:
         try:
             with get_db() as db:
-                print("update_shared_chat_by_id")
                 chat = db.get(Chat, chat_id)
-                print(chat)
-                chat.title = chat.title
-                chat.chat = chat.chat
+                shared_chat = (
+                    db.query(Chat).filter_by(user_id=f"shared-{chat_id}").first()
+                )
+
+                if shared_chat is None:
+                    return self.insert_shared_chat_by_chat_id(chat_id)
+
+                shared_chat.title = chat.title
+                shared_chat.chat = chat.chat
+
+                shared_chat.updated_at = int(time.time())
                 db.commit()
-                db.refresh(chat)
+                db.refresh(shared_chat)
 
-                return self.get_chat_by_id(chat.share_id)
+                return ChatModel.model_validate(shared_chat)
         except Exception:
             return None
 

+ 1 - 1
src/lib/components/chat/ShareChatModal.svelte

@@ -80,7 +80,7 @@
 	}
 </script>
 
-<Modal bind:show size="sm">
+<Modal bind:show size="md">
 	<div>
 		<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-0.5">
 			<div class=" text-lg font-medium self-center">{$i18n.t('Share Chat')}</div>

+ 1 - 1
src/lib/components/common/Modal.svelte

@@ -20,7 +20,7 @@
 		} else if (size === 'sm') {
 			return 'w-[30rem]';
 		} else if (size === 'md') {
-			return 'w-[48rem]';
+			return 'w-[42rem]';
 		} else {
 			return 'w-[56rem]';
 		}

+ 3 - 15
src/routes/s/[id]/+page.svelte

@@ -6,7 +6,7 @@
 	import dayjs from 'dayjs';
 
 	import { settings, chatId, WEBUI_NAME, models } from '$lib/stores';
-	import { convertMessagesToHistory } from '$lib/utils';
+	import { convertMessagesToHistory, createMessagesList } from '$lib/utils';
 
 	import { getChatByShareId } from '$lib/apis/chats';
 
@@ -40,19 +40,7 @@
 		currentId: null
 	};
 
-	$: if (history.currentId !== null) {
-		let _messages = [];
-
-		let currentMessage = history.messages[history.currentId];
-		while (currentMessage !== null) {
-			_messages.unshift({ ...currentMessage });
-			currentMessage =
-				currentMessage.parentId !== null ? history.messages[currentMessage.parentId] : null;
-		}
-		messages = _messages;
-	} else {
-		messages = [];
-	}
+	$: messages = createMessagesList(history, history.currentId);
 
 	$: if ($page.params.id) {
 		(async () => {
@@ -138,7 +126,7 @@
 					</div>
 				</div>
 
-				<hr class=" dark:border-gray-800 mt-6 mb-2" />
+				<hr class="border-gray-50 dark:border-gray-850 mt-6 mb-2" />
 			</div>
 
 			<div class=" flex flex-col w-full flex-auto overflow-auto h-0" id="messages-container">