重构会话标题编辑和删除确认逻辑;重构历史会话时间记录
This commit is contained in:
@@ -51,6 +51,17 @@ const sanitizeMessages = (messages: Message[] | undefined) =>
|
||||
const sanitizeBranchGroups = (branchGroups: BranchGroup[] | undefined) =>
|
||||
Array.isArray(branchGroups) ? cloneBranchGroups(branchGroups) : [];
|
||||
|
||||
const serializeConversationState = (state: {
|
||||
messages: Message[];
|
||||
branchGroups: BranchGroup[];
|
||||
sessionId?: string;
|
||||
}) =>
|
||||
JSON.stringify({
|
||||
messages: sanitizeMessages(state.messages),
|
||||
branchGroups: sanitizeBranchGroups(state.branchGroups),
|
||||
sessionId: state.sessionId ?? null,
|
||||
});
|
||||
|
||||
const hasChatContent = (state: {
|
||||
messages: Message[];
|
||||
branchGroups: BranchGroup[];
|
||||
@@ -260,6 +271,9 @@ export const saveActiveChatState = async (
|
||||
const storageSessionId = state.storageSessionId ?? createId();
|
||||
const preferredTitle = state.title?.trim();
|
||||
const finalTitle = preferredTitle || existingSession?.title || "新对话";
|
||||
const hasContentChanged =
|
||||
!existingSession ||
|
||||
serializeConversationState(existingSession) !== serializeConversationState(state);
|
||||
const shouldAnchorCreatedAtToFirstMessage =
|
||||
Boolean(existingSession) && !hasChatContent(existingSession) && hasContent;
|
||||
const nextRecord: ChatSessionRecord = {
|
||||
@@ -269,7 +283,7 @@ export const saveActiveChatState = async (
|
||||
createdAt: shouldAnchorCreatedAtToFirstMessage
|
||||
? now
|
||||
: existingSession?.createdAt ?? now,
|
||||
updatedAt: now,
|
||||
updatedAt: hasContentChanged ? now : existingSession?.updatedAt ?? now,
|
||||
sessionId: state.sessionId,
|
||||
messages: sanitizeMessages(state.messages),
|
||||
branchGroups: sanitizeBranchGroups(state.branchGroups),
|
||||
@@ -315,7 +329,6 @@ export const updateChatSessionTitle = async (
|
||||
title: normalizedTitle,
|
||||
isTitleManuallyEdited:
|
||||
options?.isTitleManuallyEdited ?? session.isTitleManuallyEdited ?? false,
|
||||
updatedAt: Date.now(),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user