aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-09-19 12:48:11 +0200
committerFlorian Dold <florian@dold.me>2022-09-19 12:48:11 +0200
commitd34f8e48da519f0e35ec33ee9fd4aba5d95e1667 (patch)
tree4aba683496b20f49b915639b787fa439af3a7c11 /packages/taler-wallet-core/src
parentd759c7e78a2bbf8c0cf191aab7f513353372baf9 (diff)
downloadwallet-core-d34f8e48da519f0e35ec33ee9fd4aba5d95e1667.tar.xz
wallet-core: make coin availability accounting idempotent
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r--packages/taler-wallet-core/src/operations/refresh.ts4
-rw-r--r--packages/taler-wallet-core/src/wallet.ts4
2 files changed, 7 insertions, 1 deletions
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<void> {
- 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<void> {
+ const existingCoin = await tx.coins.get(coinRecord.coinPub);
+ if (existingCoin) {
+ return;
+ }
const denom = await tx.denominations.get([
coinRecord.exchangeBaseUrl,
coinRecord.denomPubHash,