summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/pay-peer-push-debit.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-02-21 14:23:01 +0100
committerFlorian Dold <florian@dold.me>2024-02-21 14:23:01 +0100
commit52a1f63e0a8cc2ca78910e8b56326376eb1d75d0 (patch)
treee59e898731a9eb76a9af3cec75256b5a07adf893 /packages/taler-wallet-core/src/pay-peer-push-debit.ts
parent612b85c18fc17af412d08e075e1fddaa67aa7bf0 (diff)
downloadwallet-core-52a1f63e0a8cc2ca78910e8b56326376eb1d75d0.tar.gz
wallet-core-52a1f63e0a8cc2ca78910e8b56326376eb1d75d0.tar.bz2
wallet-core-52a1f63e0a8cc2ca78910e8b56326376eb1d75d0.zip
wallet-core: use cancellation tokens when possible
Diffstat (limited to 'packages/taler-wallet-core/src/pay-peer-push-debit.ts')
-rw-r--r--packages/taler-wallet-core/src/pay-peer-push-debit.ts32
1 files changed, 22 insertions, 10 deletions
diff --git a/packages/taler-wallet-core/src/pay-peer-push-debit.ts b/packages/taler-wallet-core/src/pay-peer-push-debit.ts
index 1bb3b8772..40a5d97a4 100644
--- a/packages/taler-wallet-core/src/pay-peer-push-debit.ts
+++ b/packages/taler-wallet-core/src/pay-peer-push-debit.ts
@@ -52,7 +52,7 @@ import {
import { PeerCoinRepair, selectPeerCoins } from "./coinSelection.js";
import {
PendingTaskType,
- TaskId,
+ TaskIdStr,
TaskRunResult,
TaskRunResultType,
TransactionContext,
@@ -84,7 +84,7 @@ const logger = new Logger("pay-peer-push-debit.ts");
export class PeerPushDebitTransactionContext implements TransactionContext {
readonly transactionId: TransactionIdStr;
- readonly retryTag: TaskId;
+ readonly taskId: TaskIdStr;
constructor(
public ws: InternalWalletState,
@@ -94,7 +94,7 @@ export class PeerPushDebitTransactionContext implements TransactionContext {
tag: TransactionType.PeerPushDebit,
pursePub,
});
- this.retryTag = constructTaskIdentifier({
+ this.taskId = constructTaskIdentifier({
tag: PendingTaskType.PeerPushDebit,
pursePub,
});
@@ -112,7 +112,7 @@ export class PeerPushDebitTransactionContext implements TransactionContext {
}
async suspendTransaction(): Promise<void> {
- const { ws, pursePub, transactionId, retryTag } = this;
+ const { ws, pursePub, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["peerPushDebit"],
async (tx) => {
@@ -170,7 +170,7 @@ export class PeerPushDebitTransactionContext implements TransactionContext {
}
async abortTransaction(): Promise<void> {
- const { ws, pursePub, transactionId, retryTag } = this;
+ const { ws, pursePub, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["peerPushDebit"],
async (tx) => {
@@ -224,7 +224,7 @@ export class PeerPushDebitTransactionContext implements TransactionContext {
}
async resumeTransaction(): Promise<void> {
- const { ws, pursePub, transactionId, retryTag } = this;
+ const { ws, pursePub, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["peerPushDebit"],
async (tx) => {
@@ -282,7 +282,7 @@ export class PeerPushDebitTransactionContext implements TransactionContext {
}
async failTransaction(): Promise<void> {
- const { ws, pursePub, transactionId, retryTag } = this;
+ const { ws, pursePub, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["peerPushDebit"],
async (tx) => {
@@ -440,6 +440,7 @@ async function handlePurseCreationConflict(
async function processPeerPushDebitCreateReserve(
ws: InternalWalletState,
peerPushInitiation: PeerPushDebitRecord,
+ cancellationToken: CancellationToken,
): Promise<TaskRunResult> {
const pursePub = peerPushInitiation.pursePub;
const purseExpiration = peerPushInitiation.purseExpiration;
@@ -519,6 +520,7 @@ async function processPeerPushDebitCreateReserve(
const httpResp = await ws.http.fetch(createPurseUrl.href, {
method: "POST",
body: reqBody,
+ cancellationToken,
});
{
@@ -563,6 +565,7 @@ async function processPeerPushDebitCreateReserve(
async function processPeerPushDebitAbortingDeletePurse(
ws: InternalWalletState,
peerPushInitiation: PeerPushDebitRecord,
+ cancellationToken: CancellationToken,
): Promise<TaskRunResult> {
const { pursePub, pursePriv } = peerPushInitiation;
const transactionId = constructTransactionIdentifier({
@@ -582,6 +585,7 @@ async function processPeerPushDebitAbortingDeletePurse(
headers: {
"taler-purse-signature": sigResp.sig,
},
+ cancellationToken,
});
logger.info(`deleted purse with response status ${resp.status}`);
@@ -886,7 +890,11 @@ export async function processPeerPushDebit(
switch (peerPushInitiation.status) {
case PeerPushDebitStatus.PendingCreatePurse:
- return processPeerPushDebitCreateReserve(ws, peerPushInitiation);
+ return processPeerPushDebitCreateReserve(
+ ws,
+ peerPushInitiation,
+ cancellationToken,
+ );
case PeerPushDebitStatus.PendingReady:
return processPeerPushDebitReady(
ws,
@@ -894,7 +902,11 @@ export async function processPeerPushDebit(
cancellationToken,
);
case PeerPushDebitStatus.AbortingDeletePurse:
- return processPeerPushDebitAbortingDeletePurse(ws, peerPushInitiation);
+ return processPeerPushDebitAbortingDeletePurse(
+ ws,
+ peerPushInitiation,
+ cancellationToken,
+ );
case PeerPushDebitStatus.AbortingRefreshDeleted:
return processPeerPushDebitAbortingRefreshDeleted(ws, peerPushInitiation);
case PeerPushDebitStatus.AbortingRefreshExpired:
@@ -1028,7 +1040,7 @@ export async function initiatePeerPushDebit(
hintTransactionId: transactionId,
});
- ws.taskScheduler.startShepherdTask(ctx.retryTag);
+ ws.taskScheduler.startShepherdTask(ctx.taskId);
return {
contractPriv: contractKeyPair.priv,