mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-06-17 13:05:58 +00:00
fix(frontend): reset active chat after deletion (#3519)
This commit is contained in:
@@ -25,7 +25,11 @@ import { useI18n } from "@/core/i18n/hooks";
|
||||
import { useModels } from "@/core/models/hooks";
|
||||
import { useNotification } from "@/core/notification/hooks";
|
||||
import { useLocalSettings, useThreadSettings } from "@/core/settings";
|
||||
import { useThreadStream, useThreadTokenUsage } from "@/core/threads/hooks";
|
||||
import {
|
||||
useThreadMetadata,
|
||||
useThreadStream,
|
||||
useThreadTokenUsage,
|
||||
} from "@/core/threads/hooks";
|
||||
import { threadTokenUsageToTokenUsage } from "@/core/threads/token-usage";
|
||||
import { textOfMessage } from "@/core/threads/utils";
|
||||
import { env } from "@/env";
|
||||
@@ -54,6 +58,10 @@ export default function AgentChatPage() {
|
||||
isNewThread || isMock ? undefined : threadId,
|
||||
{ enabled: tokenUsageEnabled && !isMock },
|
||||
);
|
||||
const threadMetadata = useThreadMetadata(threadId, {
|
||||
enabled: !isNewThread && !isMock,
|
||||
isMock,
|
||||
});
|
||||
const backendTokenUsage = threadTokenUsageToTokenUsage(threadTokenUsage.data);
|
||||
|
||||
const { showNotification } = useNotification();
|
||||
@@ -106,6 +114,34 @@ export default function AgentChatPage() {
|
||||
},
|
||||
});
|
||||
|
||||
const hasThreadMessages = thread.messages.length > 0;
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
!isNewThread &&
|
||||
!isMock &&
|
||||
threadMetadata.data === null &&
|
||||
!threadMetadata.isLoading &&
|
||||
!threadMetadata.isFetching &&
|
||||
!isHistoryLoading &&
|
||||
!hasMoreHistory &&
|
||||
!hasThreadMessages
|
||||
) {
|
||||
router.replace(`/workspace/agents/${agent_name}/chats/new`);
|
||||
}
|
||||
}, [
|
||||
agent_name,
|
||||
hasMoreHistory,
|
||||
hasThreadMessages,
|
||||
isHistoryLoading,
|
||||
isMock,
|
||||
isNewThread,
|
||||
router,
|
||||
threadMetadata.data,
|
||||
threadMetadata.isFetching,
|
||||
threadMetadata.isLoading,
|
||||
]);
|
||||
|
||||
const handleSubmit = useCallback(
|
||||
(message: PromptInputMessage) => {
|
||||
const sendPromise = sendMessage(threadId, message, { agent_name });
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
|
||||
import { type PromptInputMessage } from "@/components/ai-elements/prompt-input";
|
||||
@@ -24,7 +25,11 @@ import { useI18n } from "@/core/i18n/hooks";
|
||||
import { useModels } from "@/core/models/hooks";
|
||||
import { useNotification } from "@/core/notification/hooks";
|
||||
import { useLocalSettings, useThreadSettings } from "@/core/settings";
|
||||
import { useThreadStream, useThreadTokenUsage } from "@/core/threads/hooks";
|
||||
import {
|
||||
useThreadMetadata,
|
||||
useThreadStream,
|
||||
useThreadTokenUsage,
|
||||
} from "@/core/threads/hooks";
|
||||
import { threadTokenUsageToTokenUsage } from "@/core/threads/token-usage";
|
||||
import { textOfMessage } from "@/core/threads/utils";
|
||||
import { env } from "@/env";
|
||||
@@ -32,6 +37,7 @@ import { cn } from "@/lib/utils";
|
||||
|
||||
export default function ChatPage() {
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
const { threadId, setThreadId, isNewThread, setIsNewThread, isMock } =
|
||||
useThreadChat();
|
||||
// `isNewThread` tracks whether the backend has the thread yet — gates the
|
||||
@@ -47,6 +53,10 @@ export default function ChatPage() {
|
||||
isNewThread || isMock ? undefined : threadId,
|
||||
{ enabled: tokenUsageEnabled && !isMock },
|
||||
);
|
||||
const threadMetadata = useThreadMetadata(threadId, {
|
||||
enabled: !isNewThread && !isMock,
|
||||
isMock,
|
||||
});
|
||||
const backendTokenUsage = threadTokenUsageToTokenUsage(threadTokenUsage.data);
|
||||
const mountedRef = useRef(false);
|
||||
useSpecificChatMode();
|
||||
@@ -108,6 +118,33 @@ export default function ChatPage() {
|
||||
},
|
||||
});
|
||||
|
||||
const hasThreadMessages = thread.messages.length > 0;
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
!isNewThread &&
|
||||
!isMock &&
|
||||
threadMetadata.data === null &&
|
||||
!threadMetadata.isLoading &&
|
||||
!threadMetadata.isFetching &&
|
||||
!isHistoryLoading &&
|
||||
!hasMoreHistory &&
|
||||
!hasThreadMessages
|
||||
) {
|
||||
router.replace("/workspace/chats/new");
|
||||
}
|
||||
}, [
|
||||
hasMoreHistory,
|
||||
hasThreadMessages,
|
||||
isHistoryLoading,
|
||||
isMock,
|
||||
isNewThread,
|
||||
router,
|
||||
threadMetadata.data,
|
||||
threadMetadata.isFetching,
|
||||
threadMetadata.isLoading,
|
||||
]);
|
||||
|
||||
const handleSubmit = useCallback(
|
||||
(message: PromptInputMessage) => {
|
||||
const sendPromise = sendMessage(threadId, message);
|
||||
|
||||
Reference in New Issue
Block a user