summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/recoup.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-31 16:50:34 +0200
committerFlorian Dold <florian@dold.me>2024-03-31 16:50:34 +0200
commitf45340eb11435f47a3a561c724cd356e5b4ba885 (patch)
tree3c2a079d78202908f0007fe065f7225ba016e415 /packages/taler-wallet-core/src/recoup.ts
parent2d61180dce798ab260d47f94b382fd4f843a55bf (diff)
downloadwallet-core-f45340eb11435f47a3a561c724cd356e5b4ba885.tar.gz
wallet-core-f45340eb11435f47a3a561c724cd356e5b4ba885.tar.bz2
wallet-core-f45340eb11435f47a3a561c724cd356e5b4ba885.zip
wallet-core: implement denom-loss transaction
Diffstat (limited to 'packages/taler-wallet-core/src/recoup.ts')
-rw-r--r--packages/taler-wallet-core/src/recoup.ts36
1 files changed, 19 insertions, 17 deletions
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<void> {
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<void> {
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;
}