summaryrefslogtreecommitdiff
path: root/src/webex/wxBackend.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/webex/wxBackend.ts')
-rw-r--r--src/webex/wxBackend.ts27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts
index 974bcb3c2..2f249af44 100644
--- a/src/webex/wxBackend.ts
+++ b/src/webex/wxBackend.ts
@@ -303,6 +303,26 @@ function handleMessage(sender: MessageSender,
}
return resp;
}
+ case "log-and-display-error":
+ logging.storeReport(detail).then((reportUid) => {
+ const url = chrome.extension.getURL(`/src/webex/pages/error.html?reportUid=${reportUid}`);
+ if (detail.sameTab && sender && sender.tab && sender.tab.id) {
+ chrome.tabs.update(detail.tabId, { url });
+ } else {
+ chrome.tabs.create({ url });
+ }
+ });
+ return;
+ case "get-report":
+ return logging.getReport(detail.reportUid);
+ case "accept-refund":
+ return needsWallet().acceptRefund(detail.refund_permissions);
+ case "get-purchase":
+ const contractTermsHash = detail.contractTermsHash;
+ if (!contractTermsHash) {
+ throw Error("contractTermsHash missing");
+ }
+ return needsWallet().getPurchase(contractTermsHash);
default:
// Exhaustiveness check.
// See https://www.typescriptlang.org/docs/handbook/advanced-types.html
@@ -332,7 +352,7 @@ async function dispatch(req: any, sender: any, sendResponse: any): Promise<void>
try {
sendResponse({
error: "exception",
- hint: e.message,
+ message: e.message,
stack,
});
} catch (e) {
@@ -371,6 +391,9 @@ class ChromeNotifier implements Notifier {
/**
* Mapping from tab ID to payment information (if any).
+ *
+ * Used to pass information from an intercepted HTTP header to the content
+ * script on the page.
*/
const paymentRequestCookies: { [n: number]: any } = {};
@@ -392,6 +415,7 @@ function handleHttpPayment(headerList: chrome.webRequest.HttpHeader[], url: stri
const fields = {
contract_url: headers["x-taler-contract-url"],
offer_url: headers["x-taler-offer-url"],
+ refund_url: headers["x-taler-refund-url"],
};
const talerHeaderFound = Object.keys(fields).filter((x: any) => (fields as any)[x]).length !== 0;
@@ -406,6 +430,7 @@ function handleHttpPayment(headerList: chrome.webRequest.HttpHeader[], url: stri
const payDetail = {
contract_url: fields.contract_url,
offer_url: fields.offer_url,
+ refund_url: fields.refund_url,
};
console.log("got pay detail", payDetail);