aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-06-24 17:49:53 +0200
committerFlorian Dold <florian@dold.me>2023-06-24 17:49:53 +0200
commit1f31ebc3cc4b116f4d762f974e803c7ef85ab51f (patch)
tree4f67a83803c21bec53fe1728cb5733c03bc43e8a /packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts
parent4f30506dcacc587586381b1a8fa20c5442784e41 (diff)
downloadwallet-core-1f31ebc3cc4b116f4d762f974e803c7ef85ab51f.tar.gz
wallet-core-1f31ebc3cc4b116f4d762f974e803c7ef85ab51f.tar.bz2
wallet-core-1f31ebc3cc4b116f4d762f974e803c7ef85ab51f.zip
wallet-core: allow confirming peer-push-credit via txid
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/pay-peer-push-credit.ts20
1 files changed, 18 insertions, 2 deletions
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<AcceptPeerPushPaymentResponse> {
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 {