aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-01-29 18:59:45 +0100
committerFlorian Dold <florian.dold@gmail.com>2018-01-29 18:59:45 +0100
commit9fe6dc596573f38b13f0b15c946b8bc16013fdd9 (patch)
tree6fe2ba7264d488d3189b0ab560d2685b14e4fe12
parent83674bd7a9d4524753f6d438ea88b76a52d43a9b (diff)
better error handling
-rw-r--r--src/webex/pages/confirm-contract.tsx1
-rw-r--r--src/webex/pages/confirm-create-reserve.tsx22
-rw-r--r--src/webex/wxApi.ts2
3 files changed, 12 insertions, 13 deletions
diff --git a/src/webex/pages/confirm-contract.tsx b/src/webex/pages/confirm-contract.tsx
index 6089d0f8a..21f05d5d6 100644
--- a/src/webex/pages/confirm-contract.tsx
+++ b/src/webex/pages/confirm-contract.tsx
@@ -256,7 +256,6 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt
}
this.setState({ confirmPayError: e.detail });
return;
- } finally {
}
console.log("payResult", payResult);
document.location.href = payResult.nextUrl;
diff --git a/src/webex/pages/confirm-create-reserve.tsx b/src/webex/pages/confirm-create-reserve.tsx
index 903975c6e..bd21280c3 100644
--- a/src/webex/pages/confirm-create-reserve.tsx
+++ b/src/webex/pages/confirm-create-reserve.tsx
@@ -42,6 +42,7 @@ import {
getCurrency,
getExchangeInfo,
getReserveCreationInfo,
+ WalletApiError,
} from "../wxApi";
import {
@@ -117,7 +118,8 @@ class ManualSelection extends ImplicitStateComponent<ManualSelectionProps> {
<input className="url" type="text" spellCheck={false}
value={this.url()}
key="exchange-url-input"
- onInput={(e) => this.onUrlChanged((e.target as HTMLInputElement).value)} />
+ onInput={(e) => this.onUrlChanged((e.target as HTMLInputElement).value)}
+ onChange={(e) => this.onUrlChanged((e.target as HTMLInputElement).value)} />
</div>
<div className="pure-u-1">
<button className="pure-button button-success"
@@ -125,6 +127,7 @@ class ManualSelection extends ImplicitStateComponent<ManualSelectionProps> {
onClick={() => this.props.onSelect(this.url())}>
{i18n.str`Select`}
</button>
+ <span> </span>
{this.errorMessage()}
</div>
</div>
@@ -149,15 +152,12 @@ class ManualSelection extends ImplicitStateComponent<ManualSelectionProps> {
console.log("getExchangeInfo returned");
this.isOkay(true);
} catch (e) {
- console.log("got error", e);
- if (e.hasOwnProperty("httpStatus")) {
- this.errorMessage(`Error: request failed with status ${e.httpStatus}`);
- } else if (e.hasOwnProperty("errorResponse")) {
- const resp = e.errorResponse;
- this.errorMessage(`Error: ${resp.error} (${resp.hint})`);
- } else {
- this.errorMessage("invalid exchange URL");
+ if (!(e instanceof WalletApiError)) {
+ // maybe it's something more serious, don't handle here!
+ throw e;
}
+ console.log(`got error "${e.message} "with detail`, e.detail);
+ this.errorMessage(i18n.str`Invalid exchange URL (${e.message})`);
}
}
@@ -345,7 +345,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
<div>
<h2>Known Exchanges</h2>
{exchanges.map((e) => (
- <button className="pure-button button-success" onClick={() => this.select(e.baseUrl)}>
+ <button key={e.baseUrl} className="pure-button button-success" onClick={() => this.select(e.baseUrl)}>
Select <strong>{e.baseUrl}</strong>
</button>
))}
@@ -503,7 +503,7 @@ async function main() {
// TODO: provide more context information, maybe factor it out into a
// TODO:generic error reporting function or component.
document.body.innerText = i18n.str`Fatal error: "${e.message}".`;
- console.error(`got error "${e.message}"`, e);
+ console.error("got error", e);
}
}
diff --git a/src/webex/wxApi.ts b/src/webex/wxApi.ts
index ee1ca23ba..32788d37b 100644
--- a/src/webex/wxApi.ts
+++ b/src/webex/wxApi.ts
@@ -86,7 +86,7 @@ async function callBackend<T extends MessageType>(
return new Promise<MessageMap[T]["response"]>((resolve, reject) => {
chrome.runtime.sendMessage({ type, detail }, (resp) => {
if (typeof resp === "object" && resp && resp.error) {
- const e = new WalletApiError(resp.error.message, resp);
+ const e = new WalletApiError(resp.message, resp);
reject(e);
} else {
resolve(resp);