diff options
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts b/packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts index 322d9ca71..c7b59e6db 100644 --- a/packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts +++ b/packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts @@ -78,6 +78,7 @@ import { import { constructTransactionIdentifier, notifyTransition, + parseTransactionIdentifier, stopLongpolling, } from "./transactions.js"; @@ -387,10 +388,25 @@ export async function confirmPeerPullDebit( ws: InternalWalletState, req: ConfirmPeerPullDebitRequest, ): Promise<AcceptPeerPullPaymentResponse> { + + let peerPullPaymentIncomingId: string; + + if (req.transactionId) { + const parsedTx = parseTransactionIdentifier(req.transactionId); + if (!parsedTx || parsedTx.tag !== TransactionType.PeerPullDebit) { + throw Error("invalid peer-pull-debit transaction identifier"); + } + peerPullPaymentIncomingId = parsedTx.peerPullPaymentIncomingId; + } else if (req.peerPullPaymentIncomingId) { + peerPullPaymentIncomingId = req.peerPullPaymentIncomingId; + } else { + throw Error("invalid request, transactionId or peerPullPaymentIncomingId required"); + } + const peerPullInc = await ws.db .mktx((x) => [x.peerPullPaymentIncoming]) .runReadOnly(async (tx) => { - return tx.peerPullPaymentIncoming.get(req.peerPullPaymentIncomingId); + return tx.peerPullPaymentIncoming.get(peerPullPaymentIncomingId); }); if (!peerPullInc) { @@ -436,7 +452,7 @@ export async function confirmPeerPullDebit( // allocationId: `txn:peer-pull-debit:${req.peerPullPaymentIncomingId}`, allocationId: constructTransactionIdentifier({ tag: TransactionType.PeerPullDebit, - peerPullPaymentIncomingId: req.peerPullPaymentIncomingId, + peerPullPaymentIncomingId, }), coinPubs: sel.coins.map((x) => x.coinPub), contributions: sel.coins.map((x) => @@ -446,7 +462,7 @@ export async function confirmPeerPullDebit( }); const pi = await tx.peerPullPaymentIncoming.get( - req.peerPullPaymentIncomingId, + peerPullPaymentIncomingId, ); if (!pi) { throw Error(); @@ -473,7 +489,7 @@ export async function confirmPeerPullDebit( const transactionId = constructTransactionIdentifier({ tag: TransactionType.PeerPullDebit, - peerPullPaymentIncomingId: req.peerPullPaymentIncomingId, + peerPullPaymentIncomingId, }); return { |