From d23252b8a91f6407f6e306c892dcf35b87c02e39 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 20 Oct 2024 18:02:41 -0700 Subject: [PATCH] enh: restore tags from chat import --- backend/open_webui/apps/webui/models/chats.py | 2 ++ backend/open_webui/apps/webui/routers/chats.py | 10 ++++++++++ src/lib/apis/chats/index.ts | 2 ++ src/lib/components/layout/Sidebar.svelte | 3 ++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/apps/webui/models/chats.py b/backend/open_webui/apps/webui/models/chats.py index 55b4a9054..f6a1e4548 100644 --- a/backend/open_webui/apps/webui/models/chats.py +++ b/backend/open_webui/apps/webui/models/chats.py @@ -65,6 +65,7 @@ class ChatForm(BaseModel): class ChatImportForm(ChatForm): + meta: Optional[dict] = {} pinned: Optional[bool] = False folder_id: Optional[str] = None @@ -139,6 +140,7 @@ class ChatTable: else "New Chat" ), "chat": form_data.chat, + "meta": form_data.meta, "pinned": form_data.pinned, "folder_id": form_data.folder_id, "created_at": int(time.time()), diff --git a/backend/open_webui/apps/webui/routers/chats.py b/backend/open_webui/apps/webui/routers/chats.py index 2f81b55bd..2e1273c1a 100644 --- a/backend/open_webui/apps/webui/routers/chats.py +++ b/backend/open_webui/apps/webui/routers/chats.py @@ -110,6 +110,16 @@ async def create_new_chat(form_data: ChatForm, user=Depends(get_verified_user)): async def import_chat(form_data: ChatImportForm, user=Depends(get_verified_user)): try: chat = Chats.import_chat(user.id, form_data) + if chat: + tags = chat.meta.get("tags", []) + for tag_id in tags: + tag_id = tag_id.replace(" ", "_").lower() + if ( + tag_id != "none" + and Tags.get_tag_by_name_and_user_id(tag_id, user.id) is None + ): + Tags.insert_new_tag(tag_id, user.id) + return ChatResponse(**chat.model_dump()) except Exception as e: log.exception(e) diff --git a/src/lib/apis/chats/index.ts b/src/lib/apis/chats/index.ts index ca3915e50..d93d21c73 100644 --- a/src/lib/apis/chats/index.ts +++ b/src/lib/apis/chats/index.ts @@ -35,6 +35,7 @@ export const createNewChat = async (token: string, chat: object) => { export const importChat = async ( token: string, chat: object, + meta: object | null, pinned?: boolean, folderId?: string | null ) => { @@ -49,6 +50,7 @@ export const importChat = async ( }, body: JSON.stringify({ chat: chat, + meta: meta ?? {}, pinned: pinned, folder_id: folderId }) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index b12641ebe..8b133bcae 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -211,8 +211,9 @@ const importChatHandler = async (items, pinned = false, folderId = null) => { console.log('importChatHandler', items, pinned, folderId); for (const item of items) { + console.log(item); if (item.chat) { - await importChat(localStorage.token, item.chat, pinned, folderId); + await importChat(localStorage.token, item.chat, item?.meta ?? {}, pinned, folderId); } }