Merge pull request #5765 from ConnectAI-E/feature/onfinish

feat: update real 'currentSession'
This commit is contained in:
Lloyd Zhou 2024-11-05 15:07:52 +08:00 committed by GitHub
commit e49fe976d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 10 deletions

View File

@ -1607,7 +1607,7 @@ function _Chat() {
title={Locale.Chat.Actions.RefreshTitle} title={Locale.Chat.Actions.RefreshTitle}
onClick={() => { onClick={() => {
showToast(Locale.Chat.Actions.RefreshToast); showToast(Locale.Chat.Actions.RefreshToast);
chatStore.summarizeSession(true); chatStore.summarizeSession(true, session);
}} }}
/> />
</div> </div>

View File

@ -352,13 +352,13 @@ export const useChatStore = createPersistStore(
return session; return session;
}, },
onNewMessage(message: ChatMessage) { onNewMessage(message: ChatMessage, targetSession: ChatSession) {
get().updateCurrentSession((session) => { get().updateTargetSession(targetSession, (session) => {
session.messages = session.messages.concat(); session.messages = session.messages.concat();
session.lastUpdate = Date.now(); session.lastUpdate = Date.now();
}); });
get().updateStat(message); get().updateStat(message);
get().summarizeSession(); get().summarizeSession(false, targetSession);
}, },
async onUserInput(content: string, attachImages?: string[]) { async onUserInput(content: string, attachImages?: string[]) {
@ -428,7 +428,7 @@ export const useChatStore = createPersistStore(
botMessage.streaming = false; botMessage.streaming = false;
if (message) { if (message) {
botMessage.content = message; botMessage.content = message;
get().onNewMessage(botMessage); get().onNewMessage(botMessage, session);
} }
ChatControllerPool.remove(session.id, botMessage.id); ChatControllerPool.remove(session.id, botMessage.id);
}, },
@ -598,9 +598,12 @@ export const useChatStore = createPersistStore(
}); });
}, },
summarizeSession(refreshTitle: boolean = false) { summarizeSession(
refreshTitle: boolean = false,
targetSession: ChatSession,
) {
const config = useAppConfig.getState(); const config = useAppConfig.getState();
const session = get().currentSession(); const session = targetSession;
const modelConfig = session.mask.modelConfig; const modelConfig = session.mask.modelConfig;
// skip summarize when using dalle3? // skip summarize when using dalle3?
if (isDalle3(modelConfig.model)) { if (isDalle3(modelConfig.model)) {
@ -651,7 +654,8 @@ export const useChatStore = createPersistStore(
}, },
onFinish(message, responseRes) { onFinish(message, responseRes) {
if (responseRes?.status === 200) { if (responseRes?.status === 200) {
get().updateCurrentSession( get().updateTargetSession(
session,
(session) => (session) =>
(session.topic = (session.topic =
message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC), message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC),
@ -719,7 +723,7 @@ export const useChatStore = createPersistStore(
onFinish(message, responseRes) { onFinish(message, responseRes) {
if (responseRes?.status === 200) { if (responseRes?.status === 200) {
console.log("[Memory] ", message); console.log("[Memory] ", message);
get().updateCurrentSession((session) => { get().updateTargetSession(session, (session) => {
session.lastSummarizeIndex = lastSummarizeIndex; session.lastSummarizeIndex = lastSummarizeIndex;
session.memoryPrompt = message; // Update the memory prompt for stored it in local storage session.memoryPrompt = message; // Update the memory prompt for stored it in local storage
}); });
@ -745,7 +749,16 @@ export const useChatStore = createPersistStore(
updater(sessions[index]); updater(sessions[index]);
set(() => ({ sessions })); set(() => ({ sessions }));
}, },
updateTargetSession(
targetSession: ChatSession,
updater: (session: ChatSession) => void,
) {
const sessions = get().sessions;
const index = sessions.findIndex((s) => s.id === targetSession.id);
if (index < 0) return;
updater(sessions[index]);
set(() => ({ sessions }));
},
async clearAllData() { async clearAllData() {
await indexedDBStorage.clear(); await indexedDBStorage.clear();
localStorage.clear(); localStorage.clear();