Fix some payment bugs.
It still doesn't work, some of the emscripten interface stuff still needs to be finished.
This commit is contained in:
parent
38c947d771
commit
0d5c37a49e
@ -19,7 +19,7 @@ namespace Db {
|
||||
}
|
||||
|
||||
export interface Keys {
|
||||
denoms: { [key: string]: Denomination };
|
||||
denoms: Denomination[];
|
||||
}
|
||||
|
||||
export interface Denomination {
|
||||
@ -47,6 +47,7 @@ namespace Db {
|
||||
denomPub: string;
|
||||
denomSig: string;
|
||||
currentAmount: AmountJson;
|
||||
mintBaseUrl: string;
|
||||
}
|
||||
|
||||
|
||||
|
@ -61,7 +61,7 @@ function signDeposit(db, offer, cds) {
|
||||
* @param db
|
||||
* @param paymentAmount
|
||||
* @param depositFeeLimit
|
||||
* @param mintKeys
|
||||
* @param allowedMints
|
||||
*/
|
||||
function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -83,10 +83,14 @@ function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints)
|
||||
if (!cursor) {
|
||||
return;
|
||||
}
|
||||
let value = cursor.value;
|
||||
let cd = {
|
||||
coin: cursor.value,
|
||||
denom: mint.keys.denoms[cursor.value.denomPub]
|
||||
denom: mint.keys.denoms.find((e) => e.denom_pub === value.denomPub)
|
||||
};
|
||||
if (!cd.denom) {
|
||||
throw Error("denom not found");
|
||||
}
|
||||
let x = m[mint.baseUrl];
|
||||
if (!x) {
|
||||
m[mint.baseUrl] = [cd];
|
||||
@ -94,6 +98,7 @@ function getPossibleMintCoins(db, paymentAmount, depositFeeLimit, allowedMints)
|
||||
else {
|
||||
x.push(cd);
|
||||
}
|
||||
cursor.continue();
|
||||
};
|
||||
};
|
||||
}
|
||||
@ -278,7 +283,7 @@ function withdrawPrepare(db, denom, reserve) {
|
||||
coinPub: coinPub.toCrock(),
|
||||
coinPriv: coinPriv.toCrock(),
|
||||
denomPub: denomPub.encode().toCrock(),
|
||||
mintBaseUrl: reserve.mintBaseUrl,
|
||||
mintBaseUrl: reserve.mint_base_url,
|
||||
withdrawSig: sig.toCrock(),
|
||||
coinEv: ev.toCrock(),
|
||||
coinValue: denom.value
|
||||
@ -330,7 +335,8 @@ function withdrawExecute(db, pc) {
|
||||
coinPriv: pc.coinPriv,
|
||||
denomPub: pc.denomPub,
|
||||
denomSig: denomSig.encode().toCrock(),
|
||||
currentAmount: pc.coinValue
|
||||
currentAmount: pc.coinValue,
|
||||
mintBaseUrl: pc.mintBaseUrl,
|
||||
};
|
||||
console.log("unblinded coin");
|
||||
resolve(coin);
|
||||
|
@ -131,7 +131,7 @@ interface MintInfo {
|
||||
* @param db
|
||||
* @param paymentAmount
|
||||
* @param depositFeeLimit
|
||||
* @param mintKeys
|
||||
* @param allowedMints
|
||||
*/
|
||||
function getPossibleMintCoins(db: IDBDatabase,
|
||||
paymentAmount: AmountJson,
|
||||
@ -156,16 +156,21 @@ function getPossibleMintCoins(db: IDBDatabase,
|
||||
if (!cursor) {
|
||||
return;
|
||||
}
|
||||
let value: Db.Coin = cursor.value;
|
||||
let cd = {
|
||||
coin: cursor.value,
|
||||
denom: mint.keys.denoms[cursor.value.denomPub]
|
||||
denom: mint.keys.denoms.find((e) => e.denom_pub === value.denomPub)
|
||||
};
|
||||
if (!cd.denom) {
|
||||
throw Error("denom not found");
|
||||
}
|
||||
let x = m[mint.baseUrl];
|
||||
if (!x) {
|
||||
m[mint.baseUrl] = [cd];
|
||||
} else {
|
||||
x.push(cd);
|
||||
}
|
||||
cursor.continue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -340,9 +345,16 @@ function rankDenom(denom1: any, denom2: any) {
|
||||
}
|
||||
|
||||
|
||||
interface Reserve {
|
||||
mint_base_url: string
|
||||
reserve_priv: string;
|
||||
reserve_pub: string;
|
||||
}
|
||||
|
||||
|
||||
function withdrawPrepare(db: IDBDatabase,
|
||||
denom: Db.Denomination,
|
||||
reserve): Promise<Db.PreCoin> {
|
||||
reserve: Reserve): Promise<Db.PreCoin> {
|
||||
let reservePriv = new EddsaPrivateKey();
|
||||
reservePriv.loadCrock(reserve.reserve_priv);
|
||||
let reservePub = new EddsaPublicKey();
|
||||
@ -383,7 +395,7 @@ function withdrawPrepare(db: IDBDatabase,
|
||||
coinPub: coinPub.toCrock(),
|
||||
coinPriv: coinPriv.toCrock(),
|
||||
denomPub: denomPub.encode().toCrock(),
|
||||
mintBaseUrl: reserve.mintBaseUrl,
|
||||
mintBaseUrl: reserve.mint_base_url,
|
||||
withdrawSig: sig.toCrock(),
|
||||
coinEv: ev.toCrock(),
|
||||
coinValue: denom.value
|
||||
@ -444,7 +456,8 @@ function withdrawExecute(db, pc: Db.PreCoin): Promise<Db.Coin> {
|
||||
coinPriv: pc.coinPriv,
|
||||
denomPub: pc.denomPub,
|
||||
denomSig: denomSig.encode().toCrock(),
|
||||
currentAmount: pc.coinValue
|
||||
currentAmount: pc.coinValue,
|
||||
mintBaseUrl: pc.mintBaseUrl,
|
||||
};
|
||||
console.log("unblinded coin");
|
||||
resolve(coin);
|
||||
|
@ -10,14 +10,12 @@
|
||||
<script src="balance-overview.js" type="text/javascript"></script>
|
||||
|
||||
<script id="balance-template" type="text/x-handlebars-template">
|
||||
{{#if this.length}}
|
||||
{{#each this}}
|
||||
<p>{{prettyAmountNoCurrency this}} <a>{{@key}}</a></p>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<p>Looks like your wallet is empty. Want to get some
|
||||
<a id="link-kudos" href="http://bank.demo.taler.net">KUDOS?</a>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
@ -20,6 +20,7 @@ document.addEventListener('DOMContentLoaded', (e) => {
|
||||
let context = document.getElementById("balance-template").innerHTML;
|
||||
let template = Handlebars.compile(context);
|
||||
document.getElementById("content").innerHTML = template(wallet);
|
||||
console.log("got wallet", JSON.stringify(wallet));
|
||||
let el = document.getElementById("link-kudos");
|
||||
if (el) {
|
||||
el.onclick = (e) => {
|
||||
@ -37,5 +38,6 @@ document.addEventListener('DOMContentLoaded', (e) => {
|
||||
});
|
||||
document.getElementById("reset").addEventListener("click", (e) => {
|
||||
chrome.runtime.sendMessage({ type: "reset" });
|
||||
window.close();
|
||||
});
|
||||
});
|
||||
|
@ -14,7 +14,7 @@ let React = {
|
||||
}
|
||||
return e;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', (e) => {
|
||||
@ -23,6 +23,7 @@ document.addEventListener('DOMContentLoaded', (e) => {
|
||||
let context = document.getElementById("balance-template").innerHTML;
|
||||
let template = Handlebars.compile(context);
|
||||
document.getElementById("content").innerHTML = template(wallet);
|
||||
console.log("got wallet", JSON.stringify(wallet));
|
||||
let el = document.getElementById("link-kudos");
|
||||
if (el) {
|
||||
el.onclick = (e) => {
|
||||
@ -41,5 +42,6 @@ document.addEventListener('DOMContentLoaded', (e) => {
|
||||
});
|
||||
document.getElementById("reset").addEventListener("click", (e) => {
|
||||
chrome.runtime.sendMessage({type: "reset"});
|
||||
window.close();
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user