aboutsummaryrefslogtreecommitdiff
path: root/content_scripts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-09-06 14:39:45 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-09-06 14:39:45 +0200
commit356a2eb01a792e4e5ef1887ef02ad2d7c1613ca3 (patch)
tree0b9a1b77a7bfcfd8a185e405556e1803826322bf /content_scripts
parent93327f5274d3a081d56a41df0809f4c4e7535c99 (diff)
downloadwallet-core-356a2eb01a792e4e5ef1887ef02ad2d7c1613ca3.tar.xz
refactor shop api event handling
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/notify.ts110
1 files changed, 5 insertions, 105 deletions
diff --git a/content_scripts/notify.ts b/content_scripts/notify.ts
index 54d7b6acb..f5c3fb575 100644
--- a/content_scripts/notify.ts
+++ b/content_scripts/notify.ts
@@ -27,18 +27,14 @@
"use strict";
+import {createReserve, confirmContract, executeContract} from "../lib/shopApi";
+
// Make sure we don't pollute the namespace too much.
namespace TalerNotify {
const PROTOCOL_VERSION = 1;
console.log("Taler injected", chrome.runtime.id);
- function subst(url: string, H_contract) {
- url = url.replace("${H_contract}", H_contract);
- url = url.replace("${$}", "$");
- return url;
- }
-
const handlers = [];
function init() {
@@ -65,8 +61,6 @@ namespace TalerNotify {
init();
function registerHandlers() {
- const $ = (x) => document.getElementById(x);
-
function addHandler(type, listener) {
document.addEventListener(type, listener);
handlers.push({type, listener});
@@ -91,16 +85,7 @@ namespace TalerNotify {
});
addHandler("taler-create-reserve", function(e: CustomEvent) {
- console.log("taler-create-reserve with " + JSON.stringify(e.detail));
- let params = {
- amount: JSON.stringify(e.detail.amount),
- callback_url: URI(e.detail.callback_url)
- .absoluteTo(document.location.href),
- bank_url: document.location.href,
- wt_types: JSON.stringify(e.detail.wt_types),
- };
- let uri = URI(chrome.extension.getURL("pages/confirm-create-reserve.html"));
- document.location.href = uri.query(params).href();
+ createReserve(e.detail.amount, e.detail.callback_url, e.detail.wt_types);
});
addHandler("taler-confirm-reserve", function(e: CustomEvent) {
@@ -116,53 +101,8 @@ namespace TalerNotify {
});
});
-
addHandler("taler-confirm-contract", function(e: CustomEvent) {
- if (!e.detail.contract_wrapper) {
- console.error("contract wrapper missing");
- return;
- }
-
- const offer = e.detail.contract_wrapper;
-
- if (!offer.contract) {
- console.error("contract field missing");
- return;
- }
-
- const msg = {
- type: "check-repurchase",
- detail: {
- contract: offer.contract
- },
- };
-
- chrome.runtime.sendMessage(msg, (resp) => {
- if (resp.error) {
- console.error("wallet backend error", resp);
- return;
- }
- if (resp.isRepurchase) {
- console.log("doing repurchase");
- console.assert(resp.existingFulfillmentUrl);
- console.assert(resp.existingContractHash);
- window.location.href = subst(resp.existingFulfillmentUrl,
- resp.existingContractHash);
-
- } else {
- const uri = URI(chrome.extension.getURL("pages/confirm-contract.html"));
- const params = {
- offer: JSON.stringify(offer),
- merchantPageUrl: document.location.href,
- };
- const target = uri.query(params).href();
- if (e.detail.replace_navigation === true) {
- document.location.replace(target);
- } else {
- document.location.href = target;
- }
- }
- });
+ confirmContract(e.detail.contract_wrapper, e.detail.replace_navigation);
});
addHandler("taler-payment-failed", (e: CustomEvent) => {
@@ -178,48 +118,8 @@ namespace TalerNotify {
});
});
- // Should be: taler-request-payment, taler-result-payment
-
addHandler("taler-execute-contract", (e: CustomEvent) => {
- console.log("got taler-execute-contract in content page");
- const msg = {
- type: "execute-payment",
- detail: {
- H_contract: e.detail.H_contract,
- },
- };
-
- chrome.runtime.sendMessage(msg, (resp) => {
- console.log("got resp");
- console.dir(resp);
- if (!resp.success) {
- console.log("got event detial:");
- console.dir(e.detail);
- if (e.detail.offering_url) {
- console.log("offering url", e.detail.offering_url);
- window.location.href = e.detail.offering_url;
- } else {
- console.error("execute-payment failed");
- }
- return;
- }
- let contract = resp.contract;
- if (!contract) {
- throw Error("contract missing");
- }
-
- // We have the details for then payment, the merchant page
- // is responsible to give it to the merchant.
-
- let evt = new CustomEvent("taler-notify-payment", {
- detail: {
- H_contract: e.detail.H_contract,
- contract: resp.contract,
- payment: resp.payReq,
- }
- });
- document.dispatchEvent(evt);
- });
+ executeContract(e.detail.H_contract, e.detail.offering_url);
});
}
} \ No newline at end of file