From d34f8e48da519f0e35ec33ee9fd4aba5d95e1667 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 19 Sep 2022 12:48:11 +0200 Subject: wallet-core: make coin availability accounting idempotent --- packages/taler-wallet-core/src/operations/refresh.ts | 4 +++- packages/taler-wallet-core/src/wallet.ts | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts index eeb492499..9560a3543 100644 --- a/packages/taler-wallet-core/src/operations/refresh.ts +++ b/packages/taler-wallet-core/src/operations/refresh.ts @@ -522,7 +522,9 @@ async function refreshReveal( refreshGroupId: string, coinIndex: number, ): Promise { - logger.info("doing refresh reveal"); + logger.info( + `doing refresh reveal for ${refreshGroupId} (old coin ${coinIndex})`, + ); const d = await ws.db .mktx((x) => [x.refreshGroups, x.coins, x.denominations]) .runReadOnly(async (tx) => { diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index 0208f24ac..c615bc81d 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -810,6 +810,10 @@ export async function makeCoinAvailable( }>, coinRecord: CoinRecord, ): Promise { + const existingCoin = await tx.coins.get(coinRecord.coinPub); + if (existingCoin) { + return; + } const denom = await tx.denominations.get([ coinRecord.exchangeBaseUrl, coinRecord.denomPubHash, -- cgit v1.2.3