diff options
author | Florian Dold <florian@dold.me> | 2021-01-14 17:24:44 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-01-14 17:24:44 +0100 |
commit | 6293de7bfa4d8a52091b251e2333e9710ce1b22a (patch) | |
tree | 79fa71811fff50886568fcd4a5f5d9406565e9d9 /packages/taler-wallet-core/src/operations/reserves.ts | |
parent | 657c4b6377d405640d353a8c5e15dbb6ac59800b (diff) | |
download | wallet-core-6293de7bfa4d8a52091b251e2333e9710ce1b22a.tar.xz |
fix reserve state machine bug, use simpler denominations in revocation test
Diffstat (limited to 'packages/taler-wallet-core/src/operations/reserves.ts')
-rw-r--r-- | packages/taler-wallet-core/src/operations/reserves.ts | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/packages/taler-wallet-core/src/operations/reserves.ts b/packages/taler-wallet-core/src/operations/reserves.ts index 4e4db1fc9..7c878668f 100644 --- a/packages/taler-wallet-core/src/operations/reserves.ts +++ b/packages/taler-wallet-core/src/operations/reserves.ts @@ -604,37 +604,50 @@ async function updateReserve( denoms, ); - if (denomSelInfo.selectedDenoms.length > 0) { - let withdrawalGroupId: string; - - if (!newReserve.initialWithdrawalStarted) { - withdrawalGroupId = newReserve.initialWithdrawalGroupId; - newReserve.initialWithdrawalStarted = true; - } else { - withdrawalGroupId = encodeCrock(randomBytes(32)); - } - - const withdrawalRecord: WithdrawalGroupRecord = { - withdrawalGroupId: withdrawalGroupId, - exchangeBaseUrl: reserve.exchangeBaseUrl, - reservePub: reserve.reservePub, - rawWithdrawalAmount: remainingAmount, - timestampStart: getTimestampNow(), - retryInfo: initRetryInfo(), - lastError: undefined, - denomsSel: denomSelectionInfoToState(denomSelInfo), - secretSeed: encodeCrock(getRandomBytes(64)), - }; + logger.trace( + `Remaining unclaimed amount in reseve is ${Amounts.stringify( + remainingAmount, + )} and can be withdrawn with ${ + denomSelInfo.selectedDenoms.length + } coins`, + ); + if (denomSelInfo.selectedDenoms.length === 0) { + newReserve.reserveStatus = ReserveRecordStatus.DORMANT; newReserve.lastError = undefined; newReserve.retryInfo = initRetryInfo(false); - newReserve.reserveStatus = ReserveRecordStatus.DORMANT; - await tx.put(Stores.reserves, newReserve); - await tx.put(Stores.withdrawalGroups, withdrawalRecord); - return withdrawalRecord; + return; } - return; + + let withdrawalGroupId: string; + + if (!newReserve.initialWithdrawalStarted) { + withdrawalGroupId = newReserve.initialWithdrawalGroupId; + newReserve.initialWithdrawalStarted = true; + } else { + withdrawalGroupId = encodeCrock(randomBytes(32)); + } + + const withdrawalRecord: WithdrawalGroupRecord = { + withdrawalGroupId: withdrawalGroupId, + exchangeBaseUrl: reserve.exchangeBaseUrl, + reservePub: reserve.reservePub, + rawWithdrawalAmount: remainingAmount, + timestampStart: getTimestampNow(), + retryInfo: initRetryInfo(), + lastError: undefined, + denomsSel: denomSelectionInfoToState(denomSelInfo), + secretSeed: encodeCrock(getRandomBytes(64)), + }; + + newReserve.lastError = undefined; + newReserve.retryInfo = initRetryInfo(false); + newReserve.reserveStatus = ReserveRecordStatus.DORMANT; + + await tx.put(Stores.reserves, newReserve); + await tx.put(Stores.withdrawalGroups, withdrawalRecord); + return withdrawalRecord; }, ); @@ -645,8 +658,6 @@ async function updateReserve( withdrawalGroupId: newWithdrawalGroup.withdrawalGroupId, }); await processWithdrawGroup(ws, newWithdrawalGroup.withdrawalGroupId); - } else { - console.trace("withdraw session already existed"); } return { ready: true }; |