fix: preserve dates for chat imports

Co-Authored-By: conql <49243542+conql@users.noreply.github.com>
This commit is contained in:
Timothy Jaeryang Baek 2025-07-02 14:21:36 +04:00
parent 3f800c069e
commit 2c6227e4b6
6 changed files with 70 additions and 21 deletions

View file

@ -72,6 +72,8 @@ class ChatImportForm(ChatForm):
meta: Optional[dict] = {} meta: Optional[dict] = {}
pinned: Optional[bool] = False pinned: Optional[bool] = False
folder_id: Optional[str] = None folder_id: Optional[str] = None
created_at: Optional[int] = None
updated_at: Optional[int] = None
class ChatTitleMessagesForm(BaseModel): class ChatTitleMessagesForm(BaseModel):
@ -147,8 +149,16 @@ class ChatTable:
"meta": form_data.meta, "meta": form_data.meta,
"pinned": form_data.pinned, "pinned": form_data.pinned,
"folder_id": form_data.folder_id, "folder_id": form_data.folder_id,
"created_at": int(time.time()), "created_at": (
"updated_at": int(time.time()), form_data.created_at
if form_data.created_at
else int(time.time())
),
"updated_at": (
form_data.updated_at
if form_data.updated_at
else int(time.time())
),
} }
) )

View file

@ -37,7 +37,9 @@ export const importChat = async (
chat: object, chat: object,
meta: object | null, meta: object | null,
pinned?: boolean, pinned?: boolean,
folderId?: string | null folderId?: string | null,
createdAt: number | null = null,
updatedAt: number | null = null
) => { ) => {
let error = null; let error = null;
@ -52,7 +54,9 @@ export const importChat = async (
chat: chat, chat: chat,
meta: meta ?? {}, meta: meta ?? {},
pinned: pinned, pinned: pinned,
folder_id: folderId folder_id: folderId,
created_at: createdAt ?? null,
updated_at: updatedAt ?? null
}) })
}) })
.then(async (res) => { .then(async (res) => {

View file

@ -55,10 +55,7 @@
import { generateChatCompletion } from '$lib/apis/ollama'; import { generateChatCompletion } from '$lib/apis/ollama';
import { import {
addTagById,
createNewChat, createNewChat,
deleteTagById,
deleteTagsById,
getAllTags, getAllTags,
getChatById, getChatById,
getChatList, getChatList,

View file

@ -6,11 +6,10 @@
import { import {
archiveAllChats, archiveAllChats,
createNewChat,
deleteAllChats, deleteAllChats,
getAllChats, getAllChats,
getAllUserChats, getChatList,
getChatList importChat
} from '$lib/apis/chats'; } from '$lib/apis/chats';
import { getImportOrigin, convertOpenAIChats } from '$lib/utils'; import { getImportOrigin, convertOpenAIChats } from '$lib/utils';
import { onMount, getContext } from 'svelte'; import { onMount, getContext } from 'svelte';
@ -58,10 +57,18 @@
console.log(chat); console.log(chat);
if (chat.chat) { if (chat.chat) {
await createNewChat(localStorage.token, chat.chat); await importChat(
localStorage.token,
chat.chat,
chat.meta ?? {},
false,
null,
chat?.created_at ?? null,
chat?.updated_at ?? null
);
} else { } else {
await createNewChat(localStorage.token, chat); // Legacy format
} await importChat(localStorage.token, chat, {}, false, null);
} }
currentChatPage.set(1); currentChatPage.set(1);

View file

@ -29,14 +29,10 @@
const i18n = getContext('i18n'); const i18n = getContext('i18n');
import { import {
deleteChatById,
getChatList, getChatList,
getAllTags, getAllTags,
getChatListBySearchText,
createNewChat,
getPinnedChatList, getPinnedChatList,
toggleChatPinnedStatusById, toggleChatPinnedStatusById,
getChatPinnedStatusById,
getChatById, getChatById,
updateChatFolderIdById, updateChatFolderIdById,
importChat importChat
@ -202,7 +198,15 @@
for (const item of items) { for (const item of items) {
console.log(item); console.log(item);
if (item.chat) { if (item.chat) {
await importChat(localStorage.token, item.chat, item?.meta ?? {}, pinned, folderId); await importChat(
localStorage.token,
item.chat,
item?.meta ?? {},
pinned,
folderId,
item?.created_at ?? null,
item?.updated_at ?? null
);
} }
} }
@ -735,7 +739,15 @@
return null; return null;
}); });
if (!chat && item) { if (!chat && item) {
chat = await importChat(localStorage.token, item.chat, item?.meta ?? {}); chat = await importChat(
localStorage.token,
item.chat,
item?.meta ?? {},
false,
null,
item?.created_at ?? null,
item?.updated_at ?? null
);
} }
if (chat) { if (chat) {
@ -793,7 +805,15 @@
return null; return null;
}); });
if (!chat && item) { if (!chat && item) {
chat = await importChat(localStorage.token, item.chat, item?.meta ?? {}); chat = await importChat(
localStorage.token,
item.chat,
item?.meta ?? {},
false,
null,
item?.created_at ?? null,
item?.updated_at ?? null
);
} }
if (chat) { if (chat) {

View file

@ -132,7 +132,18 @@
return null; return null;
}); });
if (!chat && item) { if (!chat && item) {
chat = await importChat(localStorage.token, item.chat, item?.meta ?? {}); chat = await importChat(
localStorage.token,
item.chat,
item?.meta ?? {},
false,
null,
item?.created_at ?? null,
item?.updated_at ?? null
).catch((error) => {
toast.error(`${error}`);
return null;
});
} }
// Move the chat // Move the chat