From 604cb2f80473c23f76afd37670a1a7249ae170a3 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 20 Dec 2015 20:34:20 +0100 Subject: [PATCH] Missing files, payment --- extension/background/wallet.js | 1 + extension/background/wallet.ts | 1 + extension/content_scripts/notify.js | 8 ++- extension/content_scripts/notify.ts | 7 +- extension/lib/polyfill-react.js | 16 +++++ extension/lib/polyfill-react.ts | 19 +++++ extension/manifest.json | 2 +- extension/pages/confirm-create-reserve.js | 80 +++++++++++----------- extension/pages/confirm-create-reserve.tsx | 48 +++++++++++++ 9 files changed, 136 insertions(+), 46 deletions(-) create mode 100644 extension/lib/polyfill-react.js create mode 100644 extension/lib/polyfill-react.ts create mode 100644 extension/pages/confirm-create-reserve.tsx diff --git a/extension/background/wallet.js b/extension/background/wallet.js index a8e62abdf..2c8c11f33 100644 --- a/extension/background/wallet.js +++ b/extension/background/wallet.js @@ -199,6 +199,7 @@ function doPayment(db, detail, sendResponse) { let req = db.transaction(['transactions']).objectStore("transactions").get(H_contract); console.log("executing contract", H_contract); req.onsuccess = (e) => { + console.log("got db response for existing contract"); if (!req.result) { sendResponse({ success: false, error: "contract not found" }); return; diff --git a/extension/background/wallet.ts b/extension/background/wallet.ts index fa26ba1d2..bda4da30d 100644 --- a/extension/background/wallet.ts +++ b/extension/background/wallet.ts @@ -303,6 +303,7 @@ function doPayment(db, detail, sendResponse) { let req = db.transaction(['transactions']).objectStore("transactions").get(H_contract); console.log("executing contract", H_contract); req.onsuccess = (e) => { + console.log("got db response for existing contract"); if (!req.result) { sendResponse({success: false, error: "contract not found"}); return; diff --git a/extension/content_scripts/notify.js b/extension/content_scripts/notify.js index 899355f8e..065aae193 100644 --- a/extension/content_scripts/notify.js +++ b/extension/content_scripts/notify.js @@ -55,7 +55,7 @@ document.addEventListener('taler-execute-payment', function (e) { }, }; chrome.runtime.sendMessage(msg, (resp) => { - //console.log("got response from bg page", JSON.stringify(resp)); + console.log("got backend response to execute-payment:", JSON.stringify(resp)); if (!resp.success) { console.log("failure!"); return; @@ -63,12 +63,16 @@ document.addEventListener('taler-execute-payment', function (e) { let r = new XMLHttpRequest(); r.open('post', resp.payUrl); r.send(JSON.stringify(resp.payReq)); + let evt; r.onload = (e) => { if (r.status != 200) { console.log("non-200 error"); console.log(r.responseText); + alert("merchant returned HTTP status " + r.status); + } + else { + evt = new CustomEvent("taler-payment-result", { detail: resp }); } - let evt = new Event("taler-payment-result", resp); document.dispatchEvent(evt); }; }); diff --git a/extension/content_scripts/notify.ts b/extension/content_scripts/notify.ts index 03135dd06..c45797db3 100644 --- a/extension/content_scripts/notify.ts +++ b/extension/content_scripts/notify.ts @@ -63,7 +63,7 @@ document.addEventListener('taler-execute-payment', function(e: CustomEvent) { }, }; chrome.runtime.sendMessage(msg, (resp) => { - //console.log("got response from bg page", JSON.stringify(resp)); + console.log("got backend response to execute-payment:", JSON.stringify(resp)); if (!resp.success) { console.log("failure!"); return; @@ -71,12 +71,15 @@ document.addEventListener('taler-execute-payment', function(e: CustomEvent) { let r = new XMLHttpRequest(); r.open('post', resp.payUrl); r.send(JSON.stringify(resp.payReq)); + let evt; r.onload = (e) => { if (r.status != 200) { console.log("non-200 error"); console.log(r.responseText); + alert("merchant returned HTTP status " + r.status); + } else { + evt = new CustomEvent("taler-payment-result", {detail: resp}); } - let evt = new Event("taler-payment-result", resp); document.dispatchEvent(evt); }; }); diff --git a/extension/lib/polyfill-react.js b/extension/lib/polyfill-react.js new file mode 100644 index 000000000..f30ba7c64 --- /dev/null +++ b/extension/lib/polyfill-react.js @@ -0,0 +1,16 @@ +"use strict"; +let React = { + createElement: function (tag, props, ...children) { + let e = document.createElement(tag); + for (let k in props) { + e.setAttribute(k, props[k]); + } + for (let child of children) { + if ("string" === typeof child || "number" == typeof child) { + child = document.createTextNode(child); + } + e.appendChild(child); + } + return e; + } +}; diff --git a/extension/lib/polyfill-react.ts b/extension/lib/polyfill-react.ts new file mode 100644 index 000000000..8238093ab --- /dev/null +++ b/extension/lib/polyfill-react.ts @@ -0,0 +1,19 @@ +"use strict"; + +let React = { + createElement: function(tag, props, ...children) { + let e = document.createElement(tag); + for (let k in props) { + e.setAttribute(k, props[k]); + } + for (let child of children) { + if ("string" === typeof child || "number" == typeof child) { + child = document.createTextNode(child); + } + e.appendChild(child); + } + return e; + } +}; + + diff --git a/extension/manifest.json b/extension/manifest.json index 9394e0833..cc0ea58a7 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -16,7 +16,7 @@ ], "browser_action": { - "default_icon": "icons/taler-logo-24.png", + "default_icon": "img/icon.png", "default_title": "Taler", "default_popup": "popup/balance-overview.html" }, diff --git a/extension/pages/confirm-create-reserve.js b/extension/pages/confirm-create-reserve.js index 5c35121e3..8e8d7e798 100644 --- a/extension/pages/confirm-create-reserve.js +++ b/extension/pages/confirm-create-reserve.js @@ -1,43 +1,41 @@ "use strict"; - -let url = URI(document.location.href); -let query = URI.parseQuery(url.query()); - -function updateAmount() { - let showAmount = document.getElementById("show-amount"); - console.log("Query is " + JSON.stringify(query)); - let s = query.amount_str; - if (!s) { - document.body.innerHTML = "Oops, something went wrong."; - return; - } - showAmount.textContent = s; -} - -function clone(obj) { - // This is faster than it looks ... - return JSON.parse(JSON.stringify(obj)); -} - -document.addEventListener("DOMContentLoaded", (e) => { - updateAmount(); - - document.getElementById("confirm").addEventListener("click", (e) => { - let d = clone(query); - d.mint = document.getElementById('mint-url').value; - chrome.runtime.sendMessage({type:'confirm-reserve', detail: d}, (resp) => { - if (resp.success === true) { - document.location.href = resp.backlink; - } else { - document.body.innerHTML = - `Oops, something went wrong. - The bank responded with HTTP status code ${resp.status}. - Here is some more info: -
${resp.text}
`; - } +var ConfirmCreateReserve; +(function (ConfirmCreateReserve) { + let url = URI(document.location.href); + let query = URI.parseQuery(url.query()); + function updateAmount() { + let showAmount = document.getElementById("show-amount"); + console.log("Query is " + JSON.stringify(query)); + let s = query.amount_str; + if (!s) { + document.body.innerHTML = "Oops, something went wrong."; + return; + } + showAmount.textContent = s; + } + function clone(obj) { + // This is faster than it looks ... + return JSON.parse(JSON.stringify(obj)); + } + document.addEventListener("DOMContentLoaded", (e) => { + updateAmount(); + document.getElementById("confirm").addEventListener("click", (e) => { + let d = clone(query); + d.mint = document.getElementById('mint-url').value; + chrome.runtime.sendMessage({ type: 'confirm-reserve', detail: d }, (resp) => { + if (resp.success === true) { + document.location.href = resp.backlink; + } + else { + document.body.innerHTML = + ` + Oops, something went wrong. + The bank responded with HTTP status code ${resp.status}. + Here is some more info: +
${resp.text}
+ `; + } + }); + }); }); - - }); -}); - - +})(ConfirmCreateReserve || (ConfirmCreateReserve = {})); diff --git a/extension/pages/confirm-create-reserve.tsx b/extension/pages/confirm-create-reserve.tsx new file mode 100644 index 000000000..380f769b1 --- /dev/null +++ b/extension/pages/confirm-create-reserve.tsx @@ -0,0 +1,48 @@ +"use strict"; + +namespace ConfirmCreateReserve { + + let url = URI(document.location.href); + let query: any = URI.parseQuery(url.query()); + + function updateAmount() { + let showAmount = document.getElementById("show-amount"); + console.log("Query is " + JSON.stringify(query)); + let s = query.amount_str; + if (!s) { + document.body.innerHTML = "Oops, something went wrong."; + return; + } + showAmount.textContent = s; + } + + function clone(obj) { + // This is faster than it looks ... + return JSON.parse(JSON.stringify(obj)); + } + + document.addEventListener("DOMContentLoaded", (e) => { + updateAmount(); + + document.getElementById("confirm").addEventListener("click", (e) => { + let d = clone(query); + d.mint = (document.getElementById('mint-url') as HTMLInputElement).value; + chrome.runtime.sendMessage({type:'confirm-reserve', detail: d}, + (resp) => { + if (resp.success === true) { + document.location.href = resp.backlink; + } else { + document.body.innerHTML = + ` + Oops, something went wrong. + The bank responded with HTTP status code ${resp.status}. + Here is some more info: +
${resp.text}
+ `; + } + }); + + }); + }); + +} \ No newline at end of file