aboutsummaryrefslogtreecommitdiff
path: root/extension/lib/wallet/wxmessaging.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-02-18 23:41:29 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-02-18 23:41:29 +0100
commitd8609a70e9d843bbd83d95adc866b331c749651a (patch)
tree0ac798003300e22e11d35588481240dab6aff571 /extension/lib/wallet/wxmessaging.ts
parent079e764ae6f827b1fa7c12b26f370199fc5e4d48 (diff)
notify popup of changes
Diffstat (limited to 'extension/lib/wallet/wxmessaging.ts')
-rw-r--r--extension/lib/wallet/wxmessaging.ts31
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 {