diff options
Diffstat (limited to 'extension/background')
-rw-r--r-- | extension/background/emscriptif.js | 7 | ||||
-rw-r--r-- | extension/background/emscriptif.ts | 8 | ||||
-rw-r--r-- | extension/background/wallet.js | 17 | ||||
-rw-r--r-- | extension/background/wallet.ts | 19 |
4 files changed, 32 insertions, 19 deletions
diff --git a/extension/background/emscriptif.js b/extension/background/emscriptif.js index ee864c60d..a4e50b89e 100644 --- a/extension/background/emscriptif.js +++ b/extension/background/emscriptif.js @@ -127,7 +127,8 @@ class Amount extends ArenaObject { * Perform saturating subtraction on amounts. */ sub(a) { - let res = emsc.amount_subtract(this.nativePtr, a.nativePtr, this.nativePtr); + // this = this - a + let res = emsc.amount_subtract(this.nativePtr, this.nativePtr, a.nativePtr); if (res == 0) { // Underflow return false; @@ -135,7 +136,7 @@ class Amount extends ArenaObject { if (res > 0) { return true; } - throw "Incompatible currencies"; + throw Error("Incompatible currencies"); } cmp(a) { return emsc.amount_cmp(this.nativePtr, a.nativePtr); @@ -256,7 +257,7 @@ class SignatureStruct { let name = f[0]; let member = this.members[name]; if (!member) { - throw { error: "Member not set", key: name }; + throw Error(format("Member {0} not set", name)); } totalSize += this.members[name].size(); } diff --git a/extension/background/emscriptif.ts b/extension/background/emscriptif.ts index 5ca4fef24..49ed3c943 100644 --- a/extension/background/emscriptif.ts +++ b/extension/background/emscriptif.ts @@ -19,6 +19,7 @@ declare var Module : any; + // Size of a native pointer. const PTR_SIZE = 4; @@ -202,7 +203,8 @@ class Amount extends ArenaObject { * Perform saturating subtraction on amounts. */ sub(a) { - let res = emsc.amount_subtract(this.nativePtr, a.nativePtr, this.nativePtr); + // this = this - a + let res = emsc.amount_subtract(this.nativePtr, this.nativePtr, a.nativePtr); if (res == 0) { // Underflow return false; @@ -210,7 +212,7 @@ class Amount extends ArenaObject { if (res > 0) { return true; } - throw "Incompatible currencies"; + throw Error("Incompatible currencies"); } cmp(a) { @@ -365,7 +367,7 @@ abstract class SignatureStruct { let name = f[0]; let member = this.members[name]; if (!member) { - throw {error: "Member not set", key: name}; + throw Error(format("Member {0} not set", name)); } totalSize += this.members[name].size(); } diff --git a/extension/background/wallet.js b/extension/background/wallet.js index 3281c0d07..55b22c127 100644 --- a/extension/background/wallet.js +++ b/extension/background/wallet.js @@ -107,8 +107,11 @@ function confirmReserve(db, detail, sendResponse) { function copy(o) { return JSON.parse(JSON.stringify(o)); } -function rankDenom(o1, o2) { - return (-1) * o1.cmp(o2); +function rankDenom(denom1, denom2) { + // Slow ... we should find a better way than to convert it evert time. + let v1 = new Amount(denom1.value); + let v2 = new Amount(denom2.value); + return (-1) * v1.cmp(v2); } function withdraw(denom, reserve, mint) { let wd = { @@ -128,6 +131,7 @@ function withdraw(denom, reserve, mint) { // Signature let withdrawRequest = new WithdrawRequestPS(); withdrawRequest.set("reserve_pub", reservePub); + // ... var sig = eddsaSign(withdrawRequest.toPurpose(), reservePriv); } /** @@ -140,13 +144,14 @@ function depleteReserve(db, reserve, mint) { for (let i = 0; i < 1000; i++) { let found = false; for (let d of denoms) { - let cost = new Amount(); - cost.add(new Amount(d.value)); + let cost = new Amount(d.value); cost.add(new Amount(d.fee_withdraw)); if (remaining.cmp(cost) < 0) { continue; } found = true; + console.log("Subbing " + JSON.stringify(remaining.toJson())); + console.log("With " + JSON.stringify(cost.toJson())); remaining.sub(cost); withdraw(d, reserve, mint); } @@ -159,10 +164,10 @@ function updateReserve(db, reservePub, mint) { let reserve; return new Promise((resolve, reject) => { let tx = db.transaction(['reserves']); - tx.objectStore('reserves').get(reservePub).onsuccess = (e) => { + tx.objectStore('reserves').get(reservePub.stringEncode()).onsuccess = (e) => { let reserve = e.target.result; let reqUrl = URI("reserve/status").absoluteTo(mint.baseUrl); - reqUrl.query({ 'reserve_pub': reservePub }); + reqUrl.query({ 'reserve_pub': reservePub.stringEncode() }); let myRequest = new XMLHttpRequest(); console.log("making request to " + reqUrl.href()); myRequest.open('get', reqUrl.href()); diff --git a/extension/background/wallet.ts b/extension/background/wallet.ts index 751087c7c..7f7994ab6 100644 --- a/extension/background/wallet.ts +++ b/extension/background/wallet.ts @@ -118,8 +118,11 @@ function copy(o) { } -function rankDenom(o1: Amount, o2: Amount) { - return (-1) * o1.cmp(o2); +function rankDenom(denom1: any, denom2: any) { + // Slow ... we should find a better way than to convert it evert time. + let v1 = new Amount(denom1.value); + let v2 = new Amount(denom2.value); + return (-1) * v1.cmp(v2); } @@ -141,6 +144,7 @@ function withdraw(denom, reserve, mint) { // Signature let withdrawRequest = new WithdrawRequestPS(); withdrawRequest.set("reserve_pub", reservePub); + // ... var sig = eddsaSign(withdrawRequest.toPurpose(), reservePriv); } @@ -155,13 +159,14 @@ function depleteReserve(db, reserve, mint) { for (let i = 0; i < 1000; i++) { let found = false; for (let d of denoms) { - let cost = new Amount(); - cost.add(new Amount(d.value)); + let cost = new Amount(d.value); cost.add(new Amount(d.fee_withdraw)); if (remaining.cmp(cost) < 0) { continue; } found = true; + console.log("Subbing " + JSON.stringify(remaining.toJson())); + console.log("With " + JSON.stringify(cost.toJson())); remaining.sub(cost); withdraw(d, reserve, mint); } @@ -173,14 +178,14 @@ function depleteReserve(db, reserve, mint) { } -function updateReserve(db, reservePub, mint) { +function updateReserve(db, reservePub: EddsaPublicKey, mint) { let reserve; return new Promise((resolve, reject) => { let tx = db.transaction(['reserves']); - tx.objectStore('reserves').get(reservePub).onsuccess = (e) => { + tx.objectStore('reserves').get(reservePub.stringEncode()).onsuccess = (e) => { let reserve = e.target.result; let reqUrl = URI("reserve/status").absoluteTo(mint.baseUrl); - reqUrl.query({'reserve_pub': reservePub}); + reqUrl.query({'reserve_pub': reservePub.stringEncode()}); let myRequest = new XMLHttpRequest(); console.log("making request to " + reqUrl.href()); myRequest.open('get', reqUrl.href()); |