taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit cd9a34cbb5ca8fb1c61aeda50517de60cc829e29
parent 42b6c58db80b78efd62140e0752881090498dcc1
Author: Florian Dold <florian.dold@gmail.com>
Date:   Mon,  4 May 2020 17:41:22 +0530

make wallet notifications work again

Diffstat:
Msrc/webex/pages/popup.tsx | 1-
Msrc/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 @@ -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 @@ -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);