From 87af414a5277b4cf3c7a112d2b73c8b51b8c116a Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 13 Jun 2023 16:34:53 +0800 Subject: [PATCH] feat: stop response enchancement (#352) --- web/app/components/app/configuration/debug/index.tsx | 11 +++++++---- web/app/components/share/chat/index.tsx | 9 ++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/web/app/components/app/configuration/debug/index.tsx b/web/app/components/app/configuration/debug/index.tsx index 3800795c76..9a2bdca3c3 100644 --- a/web/app/components/app/configuration/debug/index.tsx +++ b/web/app/components/app/configuration/debug/index.tsx @@ -75,6 +75,8 @@ const Debug: FC = ({ const [abortController, setAbortController] = useState(null) const [isShowFormattingChangeConfirm, setIsShowFormattingChangeConfirm] = useState(false) const [isShowSuggestion, setIsShowSuggestion] = useState(false) + const [messageTaskId, setMessageTaskId] = useState('') + const [hasStopResponded, setHasStopResponded, getHasStopResponded] = useGetState(false) useEffect(() => { if (formattingChanged && chatList.some(item => !item.isAnswer)) @@ -83,7 +85,7 @@ const Debug: FC = ({ setFormattingChanged(false) }, [formattingChanged]) - const clearConversation = () => { + const clearConversation = async () => { setConversationId(null) abortController?.abort() setResponsingFalse() @@ -136,7 +138,6 @@ const Debug: FC = ({ const doShowSuggestion = isShowSuggestion && !isResponsing const [suggestQuestions, setSuggestQuestions] = useState([]) - const [messageTaskId, setMessageTaskId] = useState('') const onSend = async (message: string) => { if (isResponsing) { notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') }) @@ -203,6 +204,7 @@ const Debug: FC = ({ let _newConversationId: null | string = null + setHasStopResponded(false) setResponsingTrue() setIsShowSuggestion(false) sendChatMessage(appId, data, { @@ -255,7 +257,7 @@ const Debug: FC = ({ } })) } - if (suggestedQuestionsAfterAnswerConfig.enabled) { + if (suggestedQuestionsAfterAnswerConfig.enabled && !getHasStopResponded()) { const { data }: any = await fetchSuggestedQuestions(appId, responseItem.id) setSuggestQuestions(data) setIsShowSuggestion(true) @@ -379,8 +381,8 @@ const Debug: FC = ({ isResponsing={isResponsing} canStopResponsing={!!messageTaskId} abortResponsing={async () => { - abortController?.abort() await stopChatMessageResponding(appId, messageTaskId) + setHasStopResponded(true) setResponsingFalse() }} isShowSuggestion={doShowSuggestion} @@ -399,6 +401,7 @@ const Debug: FC = ({ className="mt-2" content={completionRes} isLoading={!completionRes && isResponsing} + isInstalledApp={false} /> )} diff --git a/web/app/components/share/chat/index.tsx b/web/app/components/share/chat/index.tsx index 81ccfa94a8..638f2ac23d 100644 --- a/web/app/components/share/chat/index.tsx +++ b/web/app/components/share/chat/index.tsx @@ -191,7 +191,7 @@ const Main: FC = ({ }, [chatList, currConversationId]) // user can not edit inputs if user had send message const canEditInpus = !chatList.some(item => item.isAnswer === false) && isNewConversation - const createNewChat = () => { + const createNewChat = async () => { // if new chat is already exist, do not create new chat abortController?.abort() setResponsingFalse() @@ -333,6 +333,8 @@ const Main: FC = ({ const doShowSuggestion = isShowSuggestion && !isResponsing const [suggestQuestions, setSuggestQuestions] = useState([]) const [messageTaskId, setMessageTaskId] = useState('') + const [hasStopResponded, setHasStopResponded, getHasStopResponded] = useGetState(false) + const handleSend = async (message: string) => { if (isResponsing) { notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') }) @@ -371,6 +373,7 @@ const Main: FC = ({ let tempNewConversationId = '' + setHasStopResponded(false) setResponsingTrue() setIsShowSuggestion(false) sendChatMessage(data, { @@ -411,7 +414,7 @@ const Main: FC = ({ resetNewConversationInputs() setChatNotStarted() setCurrConversationId(tempNewConversationId, appId, true) - if (suggestedQuestionsAfterAnswerConfig?.enabled) { + if (suggestedQuestionsAfterAnswerConfig?.enabled && !getHasStopResponded()) { const { data }: any = await fetchSuggestedQuestions(responseItem.id, isInstalledApp, installedAppInfo?.id) setSuggestQuestions(data) setIsShowSuggestion(true) @@ -536,8 +539,8 @@ const Main: FC = ({ isResponsing={isResponsing} canStopResponsing={!!messageTaskId} abortResponsing={async () => { - abortController?.abort() await stopChatMessageResponding(appId, messageTaskId, isInstalledApp, installedAppInfo?.id) + setHasStopResponded(true) setResponsingFalse() }} checkCanSend={checkCanSend}