Skip to content

Commit 2fb322a

Browse files
committed
Fix chatgpt webapp forever loading
1 parent ea35390 commit 2fb322a

2 files changed

Lines changed: 23 additions & 15 deletions

File tree

src/app/bots/chatgpt-webapp/requesters.ts

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Browser from 'webextension-polyfill'
1+
import Browser, { Runtime } from 'webextension-polyfill'
22
import { CHATGPT_HOME_URL } from '~app/consts'
33
import { proxyFetch } from '~services/proxy-fetch'
44
import { RequestInitSubset } from '~types/messaging'
@@ -31,21 +31,29 @@ class ProxyFetchRequester implements Requester {
3131
}
3232
}
3333

34-
waitForProxyTabReady(onReady: (tab: Browser.Tabs.Tab) => void) {
35-
Browser.runtime.onMessage.addListener(async function listener(message, sender) {
36-
if (message.event === 'PROXY_TAB_READY') {
37-
console.debug('new proxy tab ready')
38-
Browser.runtime.onMessage.removeListener(listener)
39-
onReady(sender.tab!)
34+
waitForProxyTabReady(): Promise<Browser.Tabs.Tab> {
35+
return new Promise((resolve, reject) => {
36+
const listener = async function (message: any, sender: Runtime.MessageSender) {
37+
if (message.event === 'PROXY_TAB_READY') {
38+
console.debug('new proxy tab ready')
39+
Browser.runtime.onMessage.removeListener(listener)
40+
clearTimeout(timer)
41+
resolve(sender.tab!)
42+
}
4043
}
44+
const timer = setTimeout(() => {
45+
Browser.runtime.onMessage.removeListener(listener)
46+
reject(new Error('Timeout waiting for ChatGPT tab'))
47+
}, 10 * 1000)
48+
49+
Browser.runtime.onMessage.addListener(listener)
4150
})
4251
}
4352

4453
async createProxyTab() {
45-
return new Promise<Browser.Tabs.Tab>((resolve) => {
46-
this.waitForProxyTabReady(resolve)
47-
Browser.tabs.create({ url: CHATGPT_HOME_URL, pinned: true })
48-
})
54+
const readyPromise = this.waitForProxyTabReady()
55+
Browser.tabs.create({ url: CHATGPT_HOME_URL, pinned: true })
56+
return readyPromise
4957
}
5058

5159
async getProxyTab() {
@@ -62,10 +70,9 @@ class ProxyFetchRequester implements Requester {
6270
await this.createProxyTab()
6371
return
6472
}
65-
return new Promise<Browser.Tabs.Tab>((resolve) => {
66-
this.waitForProxyTabReady(resolve)
67-
Browser.tabs.reload(tab.id!)
68-
})
73+
const readyPromise = this.waitForProxyTabReady()
74+
Browser.tabs.reload(tab.id!)
75+
return readyPromise
6976
}
7077

7178
async fetch(url: string, options?: RequestInitSubset) {

src/content-script/chatgpt-inpage-proxy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ function injectTip() {
1212
div.style.padding = '10px'
1313
div.style.margin = '10px'
1414
div.style.border = '1px solid'
15+
div.style.color = 'red'
1516
document.body.appendChild(div)
1617
}
1718

0 commit comments

Comments
 (0)