diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-02-18 23:41:29 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-02-18 23:41:29 +0100 |
commit | d8609a70e9d843bbd83d95adc866b331c749651a (patch) | |
tree | 0ac798003300e22e11d35588481240dab6aff571 /extension/lib/wallet/wxmessaging.ts | |
parent | 079e764ae6f827b1fa7c12b26f370199fc5e4d48 (diff) |
notify popup of changes
Diffstat (limited to 'extension/lib/wallet/wxmessaging.ts')
-rw-r--r-- | extension/lib/wallet/wxmessaging.ts | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/extension/lib/wallet/wxmessaging.ts b/extension/lib/wallet/wxmessaging.ts index 1267167d2..fc99a2054 100644 --- a/extension/lib/wallet/wxmessaging.ts +++ b/extension/lib/wallet/wxmessaging.ts @@ -20,6 +20,8 @@ import {deleteDb, exportDb, openTalerDb} from "./db"; import {BrowserHttpLib} from "./http"; import {Checkable} from "./checkable"; import {AmountJson} from "./types"; +import Port = chrome.runtime.Port; +import {Notifier} from "./types"; "use strict"; @@ -155,6 +157,32 @@ function dispatch(handlers, req, sendResponse) { } } +class ChromeNotifier implements Notifier { + ports: Port[] = []; + + constructor() { + chrome.runtime.onConnect.addListener((port) => { + console.log("got connect!"); + this.ports.push(port); + port.onDisconnect.addListener(() => { + let i = this.ports.indexOf(port); + if (i >= 0) { + this.ports.splice(i, 1); + } else { + console.error("port already removed"); + } + }); + }); + } + + notify() { + console.log("notifying all ports"); + for (let p of this.ports) { + p.postMessage({notify: true}); + } + } +} + export function wxMain() { chrome.browserAction.setBadgeText({text: ""}); @@ -170,7 +198,8 @@ export function wxMain() { .then((db) => { let http = new BrowserHttpLib(); let badge = new ChromeBadge(); - let wallet = new Wallet(db, http, badge); + let notifier = new ChromeNotifier(); + let wallet = new Wallet(db, http, badge, notifier); let handlers = makeHandlers(db, wallet); chrome.runtime.onMessage.addListener((req, sender, sendResponse) => { try { |