diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/webex/pages/popup.tsx | 1 | ||||
-rw-r--r-- | src/webex/wxBackend.ts | 23 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/webex/pages/popup.tsx b/src/webex/pages/popup.tsx index 7da8056d0..a6c4651df 100644 --- a/src/webex/pages/popup.tsx +++ b/src/webex/pages/popup.tsx @@ -896,6 +896,5 @@ function WalletPopup(): JSX.Element { } export function createPopup(): JSX.Element { - //chrome.runtime.connect({ name: "popup" }); return <WalletPopup />; } diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts index 7966bbe25..54dd35ac4 100644 --- a/src/webex/wxBackend.ts +++ b/src/webex/wxBackend.ts @@ -68,6 +68,8 @@ const extendedPermissions = { origins: ["http://*/*", "https://*/*"], }; +const notificationPorts: chrome.runtime.Port[] = []; + async function handleMessage( sender: MessageSender, type: MessageType, @@ -447,6 +449,15 @@ async function reinitWallet(): Promise<void> { http, new BrowserCryptoWorkerFactory(), ); + wallet.addNotificationListener((x) => { + for (const x of notificationPorts) { + try { + x.postMessage({ type: "notification" }); + } catch (e) { + console.error(e); + } + } + }); wallet.runRetryLoop().catch((e) => { console.log("error during wallet retry loop", e); }); @@ -620,8 +631,18 @@ export async function wxMain(): Promise<void> { return true; }); + chrome.runtime.onConnect.addListener((port) => { + notificationPorts.push(port); + port.onDisconnect.addListener((discoPort) => { + const idx = notificationPorts.indexOf(discoPort); + if (idx >= 0) { + notificationPorts.splice(idx, 1); + } + }); + }); + setupHeaderListener(); - + chrome.permissions.onAdded.addListener((perm) => { if (chrome.runtime.lastError) { console.error(chrome.runtime.lastError); |