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:
Florian Dold 2015-12-17 23:34:39 +01:00
parent 38c947d771
commit 0d5c37a49e
6 changed files with 63 additions and 41 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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>

View File

@ -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();
});
});

View File

@ -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();
});
});