Skip to content

Commit 66053ec

Browse files
committed
fix: duplicate requests when in foreground mode
1 parent 7f61722 commit 66053ec

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

src/background/index.mjs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,29 @@ import {
3636
import { refreshMenu } from './menus.mjs'
3737
import { registerCommands } from './commands.mjs'
3838

39+
function setPortProxy(port, proxyTabId) {
40+
port.proxy = Browser.tabs.connect(proxyTabId)
41+
const proxyOnMessage = (msg) => {
42+
port.postMessage(msg)
43+
}
44+
const portOnMessage = (msg) => {
45+
port.proxy.postMessage(msg)
46+
}
47+
const proxyOnDisconnect = () => {
48+
port.proxy = Browser.tabs.connect(proxyTabId)
49+
}
50+
const portOnDisconnect = (msg) => {
51+
port.proxy.onMessage.removeListener(proxyOnMessage)
52+
port.onMessage.removeListener(portOnMessage)
53+
port.proxy.onDisconnect.removeListener(proxyOnDisconnect)
54+
port.onDisconnect.removeListener(portOnDisconnect)
55+
}
56+
port.proxy.onMessage.addListener(proxyOnMessage)
57+
port.onMessage.addListener(portOnMessage)
58+
port.proxy.onDisconnect.addListener(proxyOnDisconnect)
59+
port.onDisconnect.addListener(portOnDisconnect)
60+
}
61+
3962
async function executeApi(session, port, config) {
4063
if (chatgptWebModelKeys.includes(session.modelName)) {
4164
let tabId
@@ -47,14 +70,10 @@ async function executeApi(session, port, config) {
4770
if (tab) tabId = tab.id
4871
}
4972
if (tabId) {
50-
const proxyPort = Browser.tabs.connect(tabId)
51-
proxyPort.onMessage.addListener((msg) => {
52-
port.postMessage(msg)
53-
})
54-
port.onMessage.addListener((msg) => {
55-
proxyPort.postMessage(msg)
56-
})
57-
proxyPort.postMessage({ session })
73+
if (!port.proxy) {
74+
setPortProxy(port, tabId)
75+
port.proxy.postMessage({ session })
76+
}
5877
} else {
5978
const accessToken = await getChatGptAccessToken()
6079
await generateAnswersWithChatgptWebApi(port, session.question, session, accessToken)

0 commit comments

Comments
 (0)