diff options
author | Florian Dold <florian@dold.me> | 2023-02-23 16:07:14 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-02-23 16:07:14 +0100 |
commit | 582b6ae5f4139cd1be8096dd59371430455bbeef (patch) | |
tree | be4a0f36e05726950f929e7a73b51cd1d3339b9a /packages | |
parent | dd9e4555baf3b98478e9ad2b0edf81ea81add5e2 (diff) | |
download | wallet-core-582b6ae5f4139cd1be8096dd59371430455bbeef.tar.xz |
wallet-core: report correct amountEffective in peer-pull-credit even before withdrawal is active
Diffstat (limited to 'packages')
5 files changed, 25 insertions, 2 deletions
diff --git a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts index d9b4399d6..eaa0108bb 100644 --- a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts +++ b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts @@ -151,7 +151,7 @@ class NodeThreadCryptoWorker implements CryptoWorker { this.onmessage(v); } }); - this.nodeWorker.unref(); + //this.nodeWorker.unref(); } /** diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index 630713ee3..a7bdda3ec 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -1795,6 +1795,8 @@ export interface PeerPullPaymentInitiationRecord { */ amount: AmountString; + estimatedAmountEffective: AmountString; + /** * Purse public key. Used as the primary key to look * up this record. @@ -2607,6 +2609,18 @@ export const walletDbFixups: FixupDescription[] = [ }, }, { + name: "PeerPullPaymentInitiationRecord_estimatedAmountEffective_add", + async fn(tx): Promise<void> { + await tx.peerPullPaymentInitiations.iter().forEachAsync(async (pi) => { + if (pi.estimatedAmountEffective) { + return; + } + pi.estimatedAmountEffective = pi.amount; + await tx.peerPullPaymentInitiations.put(pi); + }); + }, + }, + { name: "PeerPushPaymentInitiationRecord_ALL_removeLegacyTx", async fn(tx): Promise<void> { await tx.peerPushPaymentInitiations.iter().forEachAsync(async (pi) => { diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts index 457344e06..8a98c8299 100644 --- a/packages/taler-wallet-core/src/operations/exchanges.ts +++ b/packages/taler-wallet-core/src/operations/exchanges.ts @@ -260,6 +260,7 @@ async function validateWireInfo( throw Error("exchange acct signature invalid"); } } + logger.trace("account validation done"); const feesForType: WireFeeMap = {}; for (const wireMethod of Object.keys(wireInfo.fees)) { const feeList: WireFee[] = []; diff --git a/packages/taler-wallet-core/src/operations/pay-peer.ts b/packages/taler-wallet-core/src/operations/pay-peer.ts index 6a04bce7c..05338b83e 100644 --- a/packages/taler-wallet-core/src/operations/pay-peer.ts +++ b/packages/taler-wallet-core/src/operations/pay-peer.ts @@ -1655,6 +1655,13 @@ export async function initiatePeerPullPayment( const mergeReserveRowId = mergeReserveInfo.rowId; checkDbInvariant(!!mergeReserveRowId); + const wi = await getExchangeWithdrawalInfo( + ws, + exchangeBaseUrl, + Amounts.parseOrThrow(req.partialContractTerms.amount), + undefined, + ); + await ws.db .mktx((x) => [x.peerPullPaymentInitiations, x.contractTerms]) .runReadWrite(async (tx) => { @@ -1673,6 +1680,7 @@ export async function initiatePeerPullPayment( contractPriv: contractKeyPair.priv, contractPub: contractKeyPair.pub, withdrawalGroupId, + estimatedAmountEffective: wi.withdrawalAmountEffective, }); await tx.contractTerms.put({ contractTermsRaw: contractTerms, diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 764115cef..54fe1320d 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -542,7 +542,7 @@ function buildTransactionForPeerPullCredit( return { type: TransactionType.PeerPullCredit, - amountEffective: Amounts.stringify(peerContractTerms.amount), + amountEffective: Amounts.stringify(pullCredit.amount), amountRaw: Amounts.stringify(peerContractTerms.amount), exchangeBaseUrl: pullCredit.exchangeBaseUrl, extendedStatus: ExtendedStatus.Pending, |