mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	Merge pull request #5765 from ConnectAI-E/feature/onfinish
feat: update real 'currentSession'
This commit is contained in:
		@@ -1607,7 +1607,7 @@ function _Chat() {
 | 
			
		||||
              title={Locale.Chat.Actions.RefreshTitle}
 | 
			
		||||
              onClick={() => {
 | 
			
		||||
                showToast(Locale.Chat.Actions.RefreshToast);
 | 
			
		||||
                chatStore.summarizeSession(true);
 | 
			
		||||
                chatStore.summarizeSession(true, session);
 | 
			
		||||
              }}
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user