aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/operations/pay.ts2
-rw-r--r--src/operations/reserves.ts5
-rw-r--r--src/operations/versions.ts4
-rw-r--r--src/operations/withdraw.ts5
-rw-r--r--src/types/notifications.ts31
-rw-r--r--src/wallet.ts15
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,
+ });
}
}
}