aboutsummaryrefslogtreecommitdiff
path: root/extension/background
diff options
context:
space:
mode:
Diffstat (limited to 'extension/background')
-rw-r--r--extension/background/emscriptif.js25
-rw-r--r--extension/background/emscriptif.ts28
-rw-r--r--extension/background/wallet.js11
-rw-r--r--extension/background/wallet.ts10
4 files changed, 68 insertions, 6 deletions
diff --git a/extension/background/emscriptif.js b/extension/background/emscriptif.js
index 15eef7a3a..3d4868b1e 100644
--- a/extension/background/emscriptif.js
+++ b/extension/background/emscriptif.js
@@ -490,15 +490,36 @@ class WithdrawRequestPS extends SignatureStruct {
}
class AbsoluteTimeNbo extends PackedArenaObject {
static fromTalerString(s) {
- throw Error();
+ let x = new AbsoluteTimeNbo();
+ x.alloc();
+ let r = /Date\(([0-9]+)\)/;
+ let m = r.exec(s);
+ if (m.length != 2) {
+ throw Error();
+ }
+ let n = parseInt(m[1]);
+ console.log("setting", n);
+ // XXX: This only works up to 54 bit numbers.
+ set64(x.getNative(), n);
+ return x;
}
size() {
return 8;
}
}
+// XXX: This only works up to 54 bit numbers.
+function set64(p, n) {
+ for (let i = 0; i < 8; ++i) {
+ Module.setValue(p + (8 - i), n & 0xFF, "i8");
+ n >>>= 8;
+ }
+}
class UInt64 extends PackedArenaObject {
static fromNumber(n) {
- throw Error();
+ let x = new UInt64();
+ x.alloc();
+ set64(x.getNative(), n);
+ return x;
}
size() {
return 8;
diff --git a/extension/background/emscriptif.ts b/extension/background/emscriptif.ts
index ce6f351c0..e44747d21 100644
--- a/extension/background/emscriptif.ts
+++ b/extension/background/emscriptif.ts
@@ -709,7 +709,18 @@ class WithdrawRequestPS extends SignatureStruct {
class AbsoluteTimeNbo extends PackedArenaObject {
static fromTalerString(s: string): AbsoluteTimeNbo {
- throw Error();
+ let x = new AbsoluteTimeNbo();
+ x.alloc();
+ let r = /Date\(([0-9]+)\)/;
+ let m = r.exec(s);
+ if (m.length != 2) {
+ throw Error();
+ }
+ let n = parseInt(m[1]);
+ console.log("setting", n);
+ // XXX: This only works up to 54 bit numbers.
+ set64(x.getNative(), n);
+ return x;
}
size() {
@@ -718,9 +729,22 @@ class AbsoluteTimeNbo extends PackedArenaObject {
}
+// XXX: This only works up to 54 bit numbers.
+function set64(p: number, n: number) {
+ for (let i = 0; i < 8; ++i) {
+ Module.setValue(p + (8 - i), n & 0xFF, "i8");
+ n >>>= 8;
+ }
+
+}
+
+
class UInt64 extends PackedArenaObject {
static fromNumber(n: number): UInt64 {
- throw Error();
+ let x = new UInt64();
+ x.alloc();
+ set64(x.getNative(), n);
+ return x;
}
size() {
diff --git a/extension/background/wallet.js b/extension/background/wallet.js
index 422e60ca5..a24ee372b 100644
--- a/extension/background/wallet.js
+++ b/extension/background/wallet.js
@@ -148,9 +148,15 @@ function executePay(db, offer, payCoinInfo, merchantBaseUrl, chosenMint) {
let req = new XMLHttpRequest();
req.open('post', payUrl.href());
req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+ req.send(JSON.stringify(reqData));
req.addEventListener('readystatechange', (e) => {
if (req.readyState == XMLHttpRequest.DONE) {
- resolve();
+ if (req.status == 200) {
+ resolve();
+ }
+ else {
+ throw Error("bad status " + req.status);
+ }
}
});
});
@@ -173,6 +179,9 @@ function confirmPay(db, detail, sendResponse) {
let mintUrl = Object.keys(mcs)[0];
let ds = signDeposit(db, offer, mcs[mintUrl]);
return executePay(db, offer, ds, detail.merchantPageUrl, mintUrl);
+ })
+ .then(() => {
+ sendResponse({ success: true });
});
return true;
}
diff --git a/extension/background/wallet.ts b/extension/background/wallet.ts
index a2ac45dfa..9a9971f8d 100644
--- a/extension/background/wallet.ts
+++ b/extension/background/wallet.ts
@@ -231,9 +231,14 @@ function executePay(db,
req.open('post', payUrl.href());
req.setRequestHeader("Content-Type",
"application/json;charset=UTF-8");
+ req.send(JSON.stringify(reqData));
req.addEventListener('readystatechange', (e) => {
if (req.readyState == XMLHttpRequest.DONE) {
- resolve()
+ if (req.status == 200) {
+ resolve();
+ } else {
+ throw Error("bad status " + req.status);
+ }
}
});
});
@@ -262,6 +267,9 @@ function confirmPay(db, detail: ConfirmPayRequest, sendResponse) {
let mintUrl = Object.keys(mcs)[0];
let ds = signDeposit(db, offer, mcs[mintUrl]);
return executePay(db, offer, ds, detail.merchantPageUrl, mintUrl);
+ })
+ .then(() => {
+ sendResponse({success: true});
});
return true;
}