From cd9a34cbb5ca8fb1c61aeda50517de60cc829e29 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 4 May 2020 17:41:22 +0530 Subject: make wallet notifications work again --- src/webex/pages/popup.tsx | 1 - 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 ; } 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 { 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 { 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); -- cgit v1.2.3