diff --git a/web/app/components/base/chat/embedded-chatbot/hooks.tsx b/web/app/components/base/chat/embedded-chatbot/hooks.tsx index 2ee0f57aa2..5e13cf77b7 100644 --- a/web/app/components/base/chat/embedded-chatbot/hooks.tsx +++ b/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 = {} @@ -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]) diff --git a/web/app/components/base/chat/utils.ts b/web/app/components/base/chat/utils.ts index 2b4112935e..729a50d996 100644 --- a/web/app/components/base/chat/utils.ts +++ b/web/app/components/base/chat/utils.ts @@ -10,12 +10,14 @@ async function decodeBase64AndDecompress(base64String: string) { return new TextDecoder().decode(decompressedArrayBuffer) } -function getProcessedInputsFromUrlParams(): Record { +async function getProcessedInputsFromUrlParams(): Promise> { const urlParams = new URLSearchParams(window.location.search) const inputs: Record = {} - 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 }