aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-06-26 12:53:32 +0200
committerFlorian Dold <florian@dold.me>2023-06-26 12:53:32 +0200
commiteae357160760fba990f705b092e30a0eec6f7b29 (patch)
treeaebd7a303b3c530546353fa7943a386738781d78 /packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts
parentfca893038dc61267c9861186041e129c88b46da8 (diff)
downloadwallet-core-eae357160760fba990f705b092e30a0eec6f7b29.tar.xz
wallet-core: allow confirmPeerPullDebit via txId
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/pay-peer-pull-debit.ts24
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 {