Browse Source

fix: reset inputs when reset conversation (#16233)

Panpan 1 month ago
parent
commit
cade0f65e2

+ 6 - 3
web/app/components/base/chat/embedded-chatbot/hooks.tsx

@@ -183,7 +183,10 @@ export const useEmbeddedChatbot = () => {
 
   useEffect(() => {
     // init inputs from url params
-    setInitInputs(getProcessedInputsFromUrlParams())
+    (async () => {
+      const inputs = await getProcessedInputsFromUrlParams()
+      setInitInputs(inputs)
+    })()
   }, [])
   useEffect(() => {
     const conversationInputs: Record<string, any> = {}
@@ -288,11 +291,11 @@ export const useEmbeddedChatbot = () => {
     if (conversationId)
       setClearChatList(false)
   }, [handleConversationIdInfoChange, setClearChatList])
-  const handleNewConversation = useCallback(() => {
+  const handleNewConversation = useCallback(async () => {
     currentChatInstanceRef.current.handleStop()
     setShowNewConversationItemInList(true)
     handleChangeConversation('')
-    handleNewConversationInputsChange({})
+    handleNewConversationInputsChange(await getProcessedInputsFromUrlParams())
     setClearChatList(true)
   }, [handleChangeConversation, setShowNewConversationItemInList, handleNewConversationInputsChange, setClearChatList])
 

+ 6 - 4
web/app/components/base/chat/utils.ts

@@ -10,12 +10,14 @@ async function decodeBase64AndDecompress(base64String: string) {
   return new TextDecoder().decode(decompressedArrayBuffer)
 }
 
-function getProcessedInputsFromUrlParams(): Record<string, any> {
+async function getProcessedInputsFromUrlParams(): Promise<Record<string, any>> {
   const urlParams = new URLSearchParams(window.location.search)
   const inputs: Record<string, any> = {}
-  urlParams.forEach(async (value, key) => {
-    inputs[key] = await decodeBase64AndDecompress(decodeURIComponent(value))
-  })
+  await Promise.all(
+    urlParams.entries().map(async ([key, value]) => {
+      inputs[key] = await decodeBase64AndDecompress(decodeURIComponent(value))
+    }),
+  )
   return inputs
 }