From 77950e48c76f4a3b29d01831d43039caba29888a Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期二, 18 十一月 2025 14:12:42 +0800
Subject: [PATCH] 修改
---
app/components/base/chat/chat-with-history/hooks.tsx | 99 ++++++++++++++++---------------------------------
1 files changed, 32 insertions(+), 67 deletions(-)
diff --git a/app/components/base/chat/chat-with-history/hooks.tsx b/app/components/base/chat/chat-with-history/hooks.tsx
index 91ceaff..64dbb13 100644
--- a/app/components/base/chat/chat-with-history/hooks.tsx
+++ b/app/components/base/chat/chat-with-history/hooks.tsx
@@ -16,7 +16,7 @@
Feedback,
} from '../types'
import { CONVERSATION_ID_INFO } from '../constants'
-import { buildChatItemTree, getProcessedSystemVariablesFromUrlParams } from '../utils'
+import { buildChatItemTree } from '../utils'
import { addFileInfos, sortAgentSorts } from '../../../tools/utils'
import { getProcessedFilesFromResponse } from '@/app/components/base/file-uploader/utils'
import {
@@ -42,7 +42,6 @@
import { useAppFavicon } from '@/hooks/use-app-favicon'
import { InputVarType } from '@/app/components/workflow/types'
import { TransferMethod } from '@/types/app'
-import { noop } from 'lodash-es'
function getFormattedChatList(messages: any[]) {
const newChatList: ChatItem[] = []
@@ -52,7 +51,7 @@
id: `question-${item.id}`,
content: item.query,
isAnswer: false,
- message_files: getProcessedFilesFromResponse(questionFiles.map((item: any) => ({ ...item, related_id: item.id, upload_file_id: item.upload_file_id }))),
+ message_files: getProcessedFilesFromResponse(questionFiles.map((item: any) => ({ ...item, related_id: item.id }))),
parentMessageId: item.parent_message_id || undefined,
})
const answerFiles = item.message_files?.filter((file: any) => file.belongs_to === 'assistant') || []
@@ -63,7 +62,7 @@
feedback: item.feedback,
isAnswer: true,
citation: item.retriever_resources,
- message_files: getProcessedFilesFromResponse(answerFiles.map((item: any) => ({ ...item, related_id: item.id, upload_file_id: item.upload_file_id }))),
+ message_files: getProcessedFilesFromResponse(answerFiles.map((item: any) => ({ ...item, related_id: item.id }))),
parentMessageId: `question-${item.id}`,
})
})
@@ -106,49 +105,24 @@
}, [isInstalledApp, installedAppInfo, appInfo])
const appId = useMemo(() => appData?.app_id, [appData])
- const [userId, setUserId] = useState<string>()
- useEffect(() => {
- getProcessedSystemVariablesFromUrlParams().then(({ user_id }) => {
- setUserId(user_id)
- })
- }, [])
-
useEffect(() => {
if (appData?.site.default_language)
changeLanguage(appData.site.default_language)
}, [appData])
- const [sidebarCollapseState, setSidebarCollapseState] = useState<boolean>(false)
- const handleSidebarCollapse = useCallback((state: boolean) => {
- if (appId) {
- setSidebarCollapseState(state)
- localStorage.setItem('webappSidebarCollapse', state ? 'collapsed' : 'expanded')
- }
- }, [appId, setSidebarCollapseState])
- useEffect(() => {
- if (appId) {
- const localState = localStorage.getItem('webappSidebarCollapse')
- setSidebarCollapseState(localState === 'collapsed')
- }
- }, [appId])
- const [conversationIdInfo, setConversationIdInfo] = useLocalStorageState<Record<string, Record<string, string>>>(CONVERSATION_ID_INFO, {
+ const [conversationIdInfo, setConversationIdInfo] = useLocalStorageState<Record<string, string>>(CONVERSATION_ID_INFO, {
defaultValue: {},
})
- const currentConversationId = useMemo(() => conversationIdInfo?.[appId || '']?.[userId || 'DEFAULT'] || '', [appId, conversationIdInfo, userId])
+ const currentConversationId = useMemo(() => conversationIdInfo?.[appId || ''] || '', [appId, conversationIdInfo])
const handleConversationIdInfoChange = useCallback((changeConversationId: string) => {
if (appId) {
- let prevValue = conversationIdInfo?.[appId || '']
- if (typeof prevValue === 'string')
- prevValue = {}
setConversationIdInfo({
...conversationIdInfo,
- [appId || '']: {
- ...prevValue,
- [userId || 'DEFAULT']: changeConversationId,
- },
+ [appId || '']: changeConversationId,
})
}
- }, [appId, conversationIdInfo, setConversationIdInfo, userId])
+ }, [appId, conversationIdInfo, setConversationIdInfo])
+ const [showConfigPanelBeforeChat, setShowConfigPanelBeforeChat] = useState(true)
const [newConversationId, setNewConversationId] = useState('')
const chatShouldReloadKey = useMemo(() => {
@@ -164,8 +138,6 @@
const { data: appConversationData, isLoading: appConversationDataLoading, mutate: mutateAppConversationData } = useSWR(['appConversationData', isInstalledApp, appId, false], () => fetchConversations(isInstalledApp, appId, undefined, false, 100))
const { data: appChatListData, isLoading: appChatListDataLoading } = useSWR(chatShouldReloadKey ? ['appChatList', chatShouldReloadKey, isInstalledApp, appId] : null, () => fetchChatList(chatShouldReloadKey, isInstalledApp, appId))
- const [clearChatList, setClearChatList] = useState(false)
- const [isResponding, setIsResponding] = useState(false)
const appPrevChatTree = useMemo(
() => (currentConversationId && appChatListData?.data.length)
? buildChatItemTree(getFormattedChatList(appChatListData.data))
@@ -277,17 +249,6 @@
return conversationItem
}, [conversationList, currentConversationId, pinnedConversationList])
- const currentConversationLatestInputs = useMemo(() => {
- if (!currentConversationId || !appChatListData?.data.length)
- return newConversationInputsRef.current || {}
- return appChatListData.data.slice().pop().inputs || {}
- }, [appChatListData, currentConversationId])
- const [currentConversationInputs, setCurrentConversationInputs] = useState<Record<string, any>>(currentConversationLatestInputs || {})
- useEffect(() => {
- if (currentConversationItem)
- setCurrentConversationInputs(currentConversationLatestInputs || {})
- }, [currentConversationItem, currentConversationLatestInputs])
-
const { notify } = useToastContext()
const checkInputsRequired = useCallback((silent?: boolean) => {
let hasEmptyInput = ''
@@ -326,27 +287,37 @@
return true
}, [inputsForms, notify, t])
- const handleStartChat = useCallback((callback: any) => {
+ const handleStartChat = useCallback(() => {
if (checkInputsRequired()) {
+ setShowConfigPanelBeforeChat(false)
setShowNewConversationItemInList(true)
- callback?.()
}
- }, [setShowNewConversationItemInList, checkInputsRequired])
- const currentChatInstanceRef = useRef<{ handleStop: () => void }>({ handleStop: noop })
+ }, [setShowConfigPanelBeforeChat, setShowNewConversationItemInList, checkInputsRequired])
+ const currentChatInstanceRef = useRef<{ handleStop: () => void }>({ handleStop: () => { } })
const handleChangeConversation = useCallback((conversationId: string) => {
currentChatInstanceRef.current.handleStop()
setNewConversationId('')
handleConversationIdInfoChange(conversationId)
- if (conversationId)
- setClearChatList(false)
- }, [handleConversationIdInfoChange, setClearChatList])
+
+ if (conversationId === '' && !checkInputsRequired(true))
+ setShowConfigPanelBeforeChat(true)
+ else
+ setShowConfigPanelBeforeChat(false)
+ }, [handleConversationIdInfoChange, setShowConfigPanelBeforeChat, checkInputsRequired])
const handleNewConversation = useCallback(() => {
currentChatInstanceRef.current.handleStop()
- setShowNewConversationItemInList(true)
- handleChangeConversation('')
- handleNewConversationInputsChange({})
- setClearChatList(true)
- }, [handleChangeConversation, setShowNewConversationItemInList, handleNewConversationInputsChange, setClearChatList])
+ setNewConversationId('')
+
+ if (showNewConversationItemInList) {
+ handleChangeConversation('')
+ }
+ else if (currentConversationId) {
+ handleConversationIdInfoChange('')
+ setShowConfigPanelBeforeChat(true)
+ setShowNewConversationItemInList(true)
+ handleNewConversationInputsChange({})
+ }
+ }, [handleChangeConversation, currentConversationId, handleConversationIdInfoChange, setShowConfigPanelBeforeChat, setShowNewConversationItemInList, showNewConversationItemInList, handleNewConversationInputsChange])
const handleUpdateConversationList = useCallback(() => {
mutateAppConversationData()
mutateAppPinnedConversationData()
@@ -464,6 +435,8 @@
appPrevChatTree,
pinnedConversationList,
conversationList,
+ showConfigPanelBeforeChat,
+ setShowConfigPanelBeforeChat,
setShowNewConversationItemInList,
newConversationInputs,
newConversationInputsRef,
@@ -483,13 +456,5 @@
chatShouldReloadKey,
handleFeedback,
currentChatInstanceRef,
- sidebarCollapseState,
- handleSidebarCollapse,
- clearChatList,
- setClearChatList,
- isResponding,
- setIsResponding,
- currentConversationInputs,
- setCurrentConversationInputs,
}
}
--
Gitblit v1.8.0