From f45340eb11435f47a3a561c724cd356e5b4ba885 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 31 Mar 2024 16:50:34 +0200 Subject: wallet-core: implement denom-loss transaction --- packages/taler-wallet-core/src/recoup.ts | 36 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'packages/taler-wallet-core/src/recoup.ts') diff --git a/packages/taler-wallet-core/src/recoup.ts b/packages/taler-wallet-core/src/recoup.ts index 8d5d3dd1f..b8b2cf808 100644 --- a/packages/taler-wallet-core/src/recoup.ts +++ b/packages/taler-wallet-core/src/recoup.ts @@ -26,7 +26,6 @@ */ import { Amounts, - CancellationToken, CoinStatus, Logger, RefreshReason, @@ -63,11 +62,7 @@ import { } from "./db.js"; import { createRefreshGroup } from "./refresh.js"; import { constructTransactionIdentifier } from "./transactions.js"; -import { - WalletExecutionContext, - getDenomInfo, - type InternalWalletState, -} from "./wallet.js"; +import { WalletExecutionContext, getDenomInfo } from "./wallet.js"; import { internalCreateWithdrawalGroup } from "./withdraw.js"; export const logger = new Logger("operations/recoup.ts"); @@ -237,15 +232,18 @@ export async function recoupWithdrawCoin( cs: WithdrawCoinSource, ): Promise { const reservePub = cs.reservePub; - const denomInfo = await wex.db.runReadOnlyTx(["denominations"], async (tx) => { - const denomInfo = await getDenomInfo( - wex, - tx, - coin.exchangeBaseUrl, - coin.denomPubHash, - ); - return denomInfo; - }); + const denomInfo = await wex.db.runReadOnlyTx( + ["denominations"], + async (tx) => { + const denomInfo = await getDenomInfo( + wex, + tx, + coin.exchangeBaseUrl, + coin.denomPubHash, + ); + return denomInfo; + }, + ); if (!denomInfo) { // FIXME: We should at least emit some pending operation / warning for this? return; @@ -420,7 +418,7 @@ export async function processRecoupGroup( return TaskRunResult.finished(); } -export class RewardTransactionContext implements TransactionContext { +export class RecoupTransactionContext implements TransactionContext { abortTransaction(): Promise { throw new Error("Method not implemented."); } @@ -440,7 +438,7 @@ export class RewardTransactionContext implements TransactionContext { public taskId: TaskIdStr; constructor( - public ws: InternalWalletState, + public wex: WalletExecutionContext, private recoupGroupId: string, ) { this.transactionId = constructTransactionIdentifier({ @@ -487,6 +485,10 @@ export async function createRecoupGroup( await tx.recoupGroups.put(recoupGroup); + const ctx = new RecoupTransactionContext(wex, recoupGroupId); + + wex.taskScheduler.startShepherdTask(ctx.taskId); + return recoupGroupId; } -- cgit v1.2.3