aboutsummaryrefslogtreecommitdiff
path: root/extension/lib/wallet/wxmessaging.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-02-18 22:50:17 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-02-18 22:50:27 +0100
commit079e764ae6f827b1fa7c12b26f370199fc5e4d48 (patch)
treee938a0868edfaa7bfc7d38b92ed26e978446f142 /extension/lib/wallet/wxmessaging.ts
parent0f607edbb2146ff82f9dcd71a1fe2905630c0d58 (diff)
fix #4121 and #4115
Diffstat (limited to 'extension/lib/wallet/wxmessaging.ts')
-rw-r--r--extension/lib/wallet/wxmessaging.ts35
1 files changed, 32 insertions, 3 deletions
diff --git a/extension/lib/wallet/wxmessaging.ts b/extension/lib/wallet/wxmessaging.ts
index 934984722..1267167d2 100644
--- a/extension/lib/wallet/wxmessaging.ts
+++ b/extension/lib/wallet/wxmessaging.ts
@@ -19,6 +19,7 @@ import {Wallet, Offer, Badge, ConfirmReserveRequest, CreateReserveRequest} from
import {deleteDb, exportDb, openTalerDb} from "./db";
import {BrowserHttpLib} from "./http";
import {Checkable} from "./checkable";
+import {AmountJson} from "./types";
"use strict";
@@ -77,7 +78,11 @@ function makeHandlers(db: IDBDatabase,
} catch (e) {
if (e instanceof Checkable.SchemaError) {
console.error("schema error:", e.message);
- return Promise.resolve({error: "invalid contract", hint: e.message, detail: detail});
+ return Promise.resolve({
+ error: "invalid contract",
+ hint: e.message,
+ detail: detail
+ });
} else {
throw e;
}
@@ -88,6 +93,19 @@ function makeHandlers(db: IDBDatabase,
["execute-payment"]: function(detail) {
return wallet.executePayment(detail.H_contract);
},
+ ["mint-info"]: function(detail) {
+ if (!detail.baseUrl) {
+ return Promise.resolve({error: "bad url"});
+ }
+ return wallet.updateMintFromUrl(detail.baseUrl);
+ },
+ ["reserve-creation-info"]: function(detail) {
+ if (!detail.baseUrl || typeof detail.baseUrl !== "string") {
+ return Promise.resolve({error: "bad url"});
+ }
+ let amount = AmountJson.checked(detail.amount);
+ return wallet.getReserveCreationInfo(detail.baseUrl, amount);
+ },
["get-history"]: function(detail) {
// TODO: limit history length
return wallet.getHistory();
@@ -119,7 +137,7 @@ function dispatch(handlers, req, sendResponse) {
})
})
.catch((e) => {
- console.log("exception during wallet handler'");
+ console.log("exception during wallet handler");
console.error(e.stack);
sendResponse({
error: "exception",
@@ -155,7 +173,18 @@ export function wxMain() {
let wallet = new Wallet(db, http, badge);
let handlers = makeHandlers(db, wallet);
chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
- return dispatch(handlers, req, sendResponse)
+ try {
+ return dispatch(handlers, req, sendResponse)
+ } catch (e) {
+ console.log("exception during wallet handler (dispatch)");
+ console.error(e.stack);
+ sendResponse({
+ error: "exception",
+ hint: e.message,
+ stack: e.stack.toString()
+ });
+ return false;
+ }
});
})
.catch((e) => {