From 1f31ebc3cc4b116f4d762f974e803c7ef85ab51f Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sat, 24 Jun 2023 17:49:53 +0200 Subject: wallet-core: allow confirming peer-push-credit via txid --- .../src/operations/pay-peer-push-credit.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts b/packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts index 53a569a92..341dccb7a 100644 --- a/packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts +++ b/packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts @@ -71,6 +71,7 @@ import { TransitionInfo, constructTransactionIdentifier, notifyTransition, + parseTransactionIdentifier, stopLongpolling, } from "./transactions.js"; import { @@ -617,12 +618,27 @@ export async function confirmPeerPushCredit( req: ConfirmPeerPushCreditRequest, ): Promise { let peerInc: PeerPushPaymentIncomingRecord | undefined; + let peerPushPaymentIncomingId: string; + if (req.peerPushPaymentIncomingId) { + peerPushPaymentIncomingId = req.peerPushPaymentIncomingId; + } else if (req.transactionId) { + const parsedTx = parseTransactionIdentifier(req.transactionId); + if (!parsedTx) { + throw Error("invalid transaction ID"); + } + if (parsedTx.tag !== TransactionType.PeerPushCredit) { + throw Error("invalid transaction ID type"); + } + peerPushPaymentIncomingId = parsedTx.peerPushPaymentIncomingId; + } else { + throw Error("no transaction ID (or deprecated peerPushPaymentIncomingId) provided"); + } await ws.db .mktx((x) => [x.contractTerms, x.peerPushPaymentIncoming]) .runReadWrite(async (tx) => { peerInc = await tx.peerPushPaymentIncoming.get( - req.peerPushPaymentIncomingId, + peerPushPaymentIncomingId, ); if (!peerInc) { return; @@ -643,7 +659,7 @@ export async function confirmPeerPushCredit( const transactionId = constructTransactionIdentifier({ tag: TransactionType.PeerPushCredit, - peerPushPaymentIncomingId: req.peerPushPaymentIncomingId, + peerPushPaymentIncomingId, }); return { -- cgit v1.2.3