diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-12-06 03:23:35 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-12-06 03:23:35 +0100 |
commit | e01f94e345bd94afe1643b55434a00c106d18954 (patch) | |
tree | 3b02c463fde9095b15a787c187bd58770c9a8161 /src/wallet-impl | |
parent | 4159367d8c04b96a05da8a5ded043f8296a83174 (diff) | |
download | wallet-core-e01f94e345bd94afe1643b55434a00c106d18954.tar.xz |
pending fixes
Diffstat (limited to 'src/wallet-impl')
-rw-r--r-- | src/wallet-impl/pending.ts | 49 | ||||
-rw-r--r-- | src/wallet-impl/reserves.ts | 6 |
2 files changed, 40 insertions, 15 deletions
diff --git a/src/wallet-impl/pending.ts b/src/wallet-impl/pending.ts index b0ae71f6b..2d4b16cf4 100644 --- a/src/wallet-impl/pending.ts +++ b/src/wallet-impl/pending.ts @@ -139,25 +139,17 @@ async function gatherReservePending( if (!reserve.retryInfo.active) { return; } - resp.nextRetryDelay = updateRetryDelay( - resp.nextRetryDelay, - now, - reserve.retryInfo.nextRetry, - ); - if (onlyDue && reserve.retryInfo.nextRetry.t_ms > now.t_ms) { - return; - } switch (reserve.reserveStatus) { case ReserveRecordStatus.DORMANT: // nothing to report as pending break; - case ReserveRecordStatus.WITHDRAWING: case ReserveRecordStatus.UNCONFIRMED: - case ReserveRecordStatus.QUERYING_STATUS: - case ReserveRecordStatus.REGISTERING_BANK: + if (onlyDue) { + break; + } resp.pendingOperations.push({ type: "reserve", - givesLifeness: true, + givesLifeness: false, stage: reserve.reserveStatus, timestampCreated: reserve.created, reserveType, @@ -166,9 +158,12 @@ async function gatherReservePending( }); break; case ReserveRecordStatus.WAIT_CONFIRM_BANK: + if (onlyDue) { + break; + } resp.pendingOperations.push({ type: "reserve", - givesLifeness: true, + givesLifeness: false, stage: reserve.reserveStatus, timestampCreated: reserve.created, reserveType, @@ -177,6 +172,27 @@ async function gatherReservePending( retryInfo: reserve.retryInfo, }); break; + case ReserveRecordStatus.WITHDRAWING: + case ReserveRecordStatus.QUERYING_STATUS: + case ReserveRecordStatus.REGISTERING_BANK: + resp.nextRetryDelay = updateRetryDelay( + resp.nextRetryDelay, + now, + reserve.retryInfo.nextRetry, + ); + if (onlyDue && reserve.retryInfo.nextRetry.t_ms > now.t_ms) { + return; + } + resp.pendingOperations.push({ + type: "reserve", + givesLifeness: true, + stage: reserve.reserveStatus, + timestampCreated: reserve.created, + reserveType, + reservePub: reserve.reservePub, + retryInfo: reserve.retryInfo, + }); + break; default: resp.pendingOperations.push({ type: "bug", @@ -265,7 +281,10 @@ async function gatherWithdrawalPending( if (onlyDue && wsr.retryInfo.nextRetry.t_ms > now.t_ms) { return; } - const numCoinsWithdrawn = wsr.withdrawn.reduce((a, x) => a + (x ? 1 : 0), 0); + const numCoinsWithdrawn = wsr.withdrawn.reduce( + (a, x) => a + (x ? 1 : 0), + 0, + ); const numCoinsTotal = wsr.withdrawn.length; resp.pendingOperations.push({ type: "withdraw", @@ -352,7 +371,7 @@ async function gatherPurchasePending( resp: PendingOperationsResponse, onlyDue: boolean = false, ): Promise<void> { - await tx.iter(Stores.purchases).forEach((pr) => { + await tx.iter(Stores.purchases).forEach(pr => { if (!pr.firstSuccessfulPayTimestamp) { resp.nextRetryDelay = updateRetryDelay( resp.nextRetryDelay, diff --git a/src/wallet-impl/reserves.ts b/src/wallet-impl/reserves.ts index 8a700bebc..8b8fbc7e3 100644 --- a/src/wallet-impl/reserves.ts +++ b/src/wallet-impl/reserves.ts @@ -174,6 +174,8 @@ export async function createReserve( }, ); + ws.notify({ type: NotificationType.ReserveCreated }); + // Asynchronously process the reserve, but return // to the caller already. processReserve(ws, resp.reservePub, true).catch(e => { @@ -244,6 +246,7 @@ async function registerReserveWithBank( r.retryInfo = initRetryInfo(); return r; }); + ws.notify( { type: NotificationType.Wildcard }); return processReserveBankStatus(ws, reservePub); } @@ -284,6 +287,8 @@ async function processReserveBankStatusImpl( throw e; } + ws.notify( { type: NotificationType.Wildcard }); + if (status.selection_done) { if (reserve.reserveStatus === ReserveRecordStatus.REGISTERING_BANK) { await registerReserveWithBank(ws, reservePub); @@ -322,6 +327,7 @@ async function processReserveBankStatusImpl( return r; }); } + ws.notify( { type: NotificationType.Wildcard }); } async function incrementReserveRetry( |