From ac47f6f7b60117c635f54c4ae5a48e9d5fbbb88f Mon Sep 17 00:00:00 2001 From: josc146 Date: Tue, 28 Mar 2023 12:09:36 +0800 Subject: [PATCH] fix: AbortController for Bing Mode --- src/background/apis/bing-web.mjs | 17 +++++++++-------- src/background/apis/chatgpt-web.mjs | 2 +- src/background/apis/custom-api.mjs | 2 +- src/background/apis/openai-api.mjs | 4 ++-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/background/apis/bing-web.mjs b/src/background/apis/bing-web.mjs index c8668c1..763e7c6 100644 --- a/src/background/apis/bing-web.mjs +++ b/src/background/apis/bing-web.mjs @@ -21,8 +21,8 @@ export async function generateAnswersWithBingWebApi( if (msg.stop) { console.debug('stop generating') port.postMessage({ done: true }) - controller.abort() port.onMessage.removeListener(stopListener) + controller.abort() } } port.onMessage.addListener(stopListener) @@ -36,6 +36,14 @@ export async function generateAnswersWithBingWebApi( let answer = '' const response = await bingAIClient .sendMessage(question, { + abortController: controller, + toneStyle: (await getUserConfig()).modelMode, + onProgress: (token) => { + answer += token + // remove reference markers [^number^] + answer = answer.replaceAll(/\[\^\d+\^\]/g, '') + port.postMessage({ answer: answer, done: false, session: null }) + }, ...(session.bingWeb.conversationId ? { conversationId: session.bingWeb.conversationId, @@ -44,13 +52,6 @@ export async function generateAnswersWithBingWebApi( invocationId: session.bingWeb.invocationId, } : {}), - onProgress: (token) => { - answer += token - // remove reference markers [^number^] - answer = answer.replaceAll(/\[\^\d+\^\]/g, '') - port.postMessage({ answer: answer, done: false, session: null }) - }, - toneStyle: (await getUserConfig()).modelMode, }) .catch((err) => { port.onMessage.removeListener(stopListener) diff --git a/src/background/apis/chatgpt-web.mjs b/src/background/apis/chatgpt-web.mjs index 557bf10..7225a0e 100644 --- a/src/background/apis/chatgpt-web.mjs +++ b/src/background/apis/chatgpt-web.mjs @@ -57,8 +57,8 @@ export async function generateAnswersWithChatgptWebApi(port, question, session, if (msg.stop) { console.debug('stop generating') port.postMessage({ done: true }) - controller.abort() port.onMessage.removeListener(stopListener) + controller.abort() } } port.onMessage.addListener(stopListener) diff --git a/src/background/apis/custom-api.mjs b/src/background/apis/custom-api.mjs index 08799eb..7e2e689 100644 --- a/src/background/apis/custom-api.mjs +++ b/src/background/apis/custom-api.mjs @@ -27,8 +27,8 @@ export async function generateAnswersWithCustomApi(port, question, session, apiK if (msg.stop) { console.debug('stop generating') port.postMessage({ done: true }) - controller.abort() port.onMessage.removeListener(stopListener) + controller.abort() } } port.onMessage.addListener(stopListener) diff --git a/src/background/apis/openai-api.mjs b/src/background/apis/openai-api.mjs index 2097fef..1d2cbff 100644 --- a/src/background/apis/openai-api.mjs +++ b/src/background/apis/openai-api.mjs @@ -39,8 +39,8 @@ export async function generateAnswersWithGptCompletionApi( if (msg.stop) { console.debug('stop generating') port.postMessage({ done: true }) - controller.abort() port.onMessage.removeListener(stopListener) + controller.abort() } } port.onMessage.addListener(stopListener) @@ -116,8 +116,8 @@ export async function generateAnswersWithChatgptApi(port, question, session, api if (msg.stop) { console.debug('stop generating') port.postMessage({ done: true }) - controller.abort() port.onMessage.removeListener(stopListener) + controller.abort() } } port.onMessage.addListener(stopListener)