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