diff options
-rw-r--r-- | src/operations/pay.ts | 2 | ||||
-rw-r--r-- | src/operations/reserves.ts | 5 | ||||
-rw-r--r-- | src/operations/versions.ts | 4 | ||||
-rw-r--r-- | src/operations/withdraw.ts | 5 | ||||
-rw-r--r-- | src/types/notifications.ts | 31 | ||||
-rw-r--r-- | src/wallet.ts | 15 |
6 files changed, 46 insertions, 16 deletions
diff --git a/src/operations/pay.ts b/src/operations/pay.ts index 7faace46e..a16190743 100644 --- a/src/operations/pay.ts +++ b/src/operations/pay.ts @@ -1118,7 +1118,7 @@ export async function refuseProposal( ); if (success) { ws.notify({ - type: NotificationType.Wildcard, + type: NotificationType.ProposalRefused, }); } } diff --git a/src/operations/reserves.ts b/src/operations/reserves.ts index 7dd97decb..365d6e221 100644 --- a/src/operations/reserves.ts +++ b/src/operations/reserves.ts @@ -336,7 +336,7 @@ async function registerReserveWithBank( r.retryInfo = initRetryInfo(); return r; }); - ws.notify({ type: NotificationType.Wildcard }); + ws.notify({ type: NotificationType.ReserveRegisteredWithBank }); return processReserveBankStatus(ws, reservePub); } @@ -377,8 +377,6 @@ async function processReserveBankStatusImpl( await statusResp.json(), ); - ws.notify({ type: NotificationType.Wildcard }); - if (status.selection_done) { if (reserve.reserveStatus === ReserveRecordStatus.REGISTERING_BANK) { await registerReserveWithBank(ws, reservePub); @@ -420,7 +418,6 @@ async function processReserveBankStatusImpl( }); await incrementReserveRetry(ws, reservePub, undefined); } - ws.notify({ type: NotificationType.Wildcard }); } async function incrementReserveRetry( diff --git a/src/operations/versions.ts b/src/operations/versions.ts index cfe6ed49f..31c4921c6 100644 --- a/src/operations/versions.ts +++ b/src/operations/versions.ts @@ -19,14 +19,14 @@ * * Uses libtool's current:revision:age versioning. */ -export const WALLET_EXCHANGE_PROTOCOL_VERSION = "7:0:0"; +export const WALLET_EXCHANGE_PROTOCOL_VERSION = "8:0:0"; /** * Protocol version spoken with the merchant. * * Uses libtool's current:revision:age versioning. */ -export const WALLET_MERCHANT_PROTOCOL_VERSION = "0:0:0"; +export const WALLET_MERCHANT_PROTOCOL_VERSION = "1:0:0"; /** * Cache breaker that is appended to queries such as /keys and /wire diff --git a/src/operations/withdraw.ts b/src/operations/withdraw.ts index ff618b894..19b470e83 100644 --- a/src/operations/withdraw.ts +++ b/src/operations/withdraw.ts @@ -489,7 +489,6 @@ export async function selectWithdrawalDenoms( } } while (selectedDenoms.selectedDenoms.length > 0 && !allValid); - if (Amounts.cmp(selectedDenoms.totalWithdrawCost, amount) > 0) { throw Error("Bug: withdrawal coin selection is wrong"); } @@ -515,7 +514,9 @@ async function incrementWithdrawalRetry( wsr.lastError = err; await tx.put(Stores.withdrawalGroups, wsr); }); - ws.notify({ type: NotificationType.WithdrawOperationError }); + if (err) { + ws.notify({ type: NotificationType.WithdrawOperationError, error: err }); + } } export async function processWithdrawGroup( diff --git a/src/types/notifications.ts b/src/types/notifications.ts index 3cd5be898..644dfdc80 100644 --- a/src/types/notifications.ts +++ b/src/types/notifications.ts @@ -55,7 +55,10 @@ export const enum NotificationType { PayOperationError = "pay-error", WithdrawOperationError = "withdraw-error", ReserveOperationError = "reserve-error", - Wildcard = "wildcard", + InternalError = "internal-error", + PendingOperationProcessed = "pending-operation-processed", + ProposalRefused = "proposal-refused", + ReserveRegisteredWithBank = "reserve-registered-with-bank", } export interface ProposalAcceptedNotification { @@ -63,6 +66,12 @@ export interface ProposalAcceptedNotification { proposalId: string; } +export interface InternalErrorNotification { + type: NotificationType.InternalError; + message: string; + exception: any; +} + export interface CoinWithdrawnNotification { type: NotificationType.CoinWithdrawn; } @@ -167,6 +176,7 @@ export interface TipOperationErrorNotification { export interface WithdrawOperationErrorNotification { type: NotificationType.WithdrawOperationError; + error: OperationError, } export interface RecoupOperationErrorNotification { @@ -182,8 +192,16 @@ export interface ReserveCreatedNotification { type: NotificationType.ReserveCreated; } -export interface WildcardNotification { - type: NotificationType.Wildcard; +export interface PendingOperationProcessedNotification { + type: NotificationType.PendingOperationProcessed; +} + +export interface ProposalRefusedNotification { + type: NotificationType.ProposalRefused; +} + +export interface ReserveRegisteredWithBankNotification { + type: NotificationType.ReserveRegisteredWithBank; } export type WalletNotification = @@ -215,5 +233,8 @@ export type WalletNotification = | RefundQueriedNotification | WithdrawalGroupCreatedNotification | CoinWithdrawnNotification - | WildcardNotification - | RecoupOperationErrorNotification; + | RecoupOperationErrorNotification + | InternalErrorNotification + | PendingOperationProcessedNotification + | ProposalRefusedNotification + | ReserveRegisteredWithBankNotification;
\ No newline at end of file diff --git a/src/wallet.ts b/src/wallet.ts index 5412a0fd2..9df279897 100644 --- a/src/wallet.ts +++ b/src/wallet.ts @@ -364,9 +364,20 @@ export class Wallet { try { await this.processOnePendingOperation(p); } catch (e) { - console.error(e); + if (e instanceof OperationFailedAndReportedError) { + logger.warn("operation processed resulted in reported error"); + } else { + console.error("Uncaught exception", e); + this.ws.notify({ + type: NotificationType.InternalError, + message: "uncaught exception", + exception: e, + }); + } } - this.ws.notify({ type: NotificationType.Wildcard }); + this.ws.notify({ + type: NotificationType.PendingOperationProcessed, + }); } } } |