aboutsummaryrefslogtreecommitdiff
path: root/extension/pages/confirm-create-reserve.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'extension/pages/confirm-create-reserve.tsx')
-rw-r--r--extension/pages/confirm-create-reserve.tsx48
1 files changed, 36 insertions, 12 deletions
diff --git a/extension/pages/confirm-create-reserve.tsx b/extension/pages/confirm-create-reserve.tsx
index 88af96466..e4d2d27e6 100644
--- a/extension/pages/confirm-create-reserve.tsx
+++ b/extension/pages/confirm-create-reserve.tsx
@@ -14,6 +14,9 @@
TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
*/
+import {AmountJson} from "../lib/wallet/types";
+import {amountToPretty} from "../lib/web-common";
+import {CreateReserveResponse} from "../lib/wallet/types";
"use strict";
@@ -21,12 +24,8 @@ export function main() {
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;
+ let amount = AmountJson.checked(JSON.parse(query.amount));
+ showAmount.textContent = amountToPretty(amount);
}
let url = URI(document.location.href);
@@ -35,12 +34,37 @@ export function main() {
updateAmount();
document.getElementById("confirm").addEventListener("click", (e) => {
- let d = Object.assign({}, query);
- d.mint = (document.getElementById('mint-url') as HTMLInputElement).value;
+ const d = {
+ mint: (document.getElementById('mint-url') as HTMLInputElement).value,
+ amount: JSON.parse(query.amount)
+ };
+
+ if (!d.mint) {
+ // FIXME: indicate error instead!
+ throw Error("mint missing");
+ }
- const cb = (resp) => {
- if (resp.success === true) {
- document.location.href = resp.backlink;
+ if (!d.amount) {
+ // FIXME: indicate error instead!
+ throw Error("amount missing");
+ }
+
+ const cb = (rawResp) => {
+ if (!rawResp) {
+ throw Error("empty response");
+ }
+ if (!rawResp.error) {
+ const resp = CreateReserveResponse.checked(rawResp);
+ let q = {
+ mint: resp.mint,
+ reserve_pub: resp.reservePub,
+ amount: query.amount,
+ };
+ let url = URI(query.callback_url).addQuery(q);
+ if (!url.is("absolute")) {
+ throw Error("callback url is not absolute");
+ }
+ document.location.href = url.href();
} else {
document.body.innerHTML =
`Oops, something went wrong. It looks like the bank could not
@@ -48,6 +72,6 @@ export function main() {
to check what happened.`;
}
};
- chrome.runtime.sendMessage({type: 'confirm-reserve', detail: d}, cb);
+ chrome.runtime.sendMessage({type: 'create-reserve', detail: d}, cb);
});
} \ No newline at end of file