diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-27 04:19:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-27 04:19:11 +0200 |
commit | 24181bdf20e0d23ec5ec5d2eaa08ae1cfb905f0f (patch) | |
tree | 98fc0ddbdc6c5589604ce7eac4a23d9a148f2f5c /src/webex/pages | |
parent | 8697efd2c8751717a3a3fcaf72feb7c49ebfec02 (diff) | |
download | wallet-core-24181bdf20e0d23ec5ec5d2eaa08ae1cfb905f0f.tar.xz |
better error report / retry prompt for failed payments
Diffstat (limited to 'src/webex/pages')
-rw-r--r-- | src/webex/pages/confirm-create-reserve.tsx | 36 | ||||
-rw-r--r-- | src/webex/pages/error.tsx | 46 |
2 files changed, 41 insertions, 41 deletions
diff --git a/src/webex/pages/confirm-create-reserve.tsx b/src/webex/pages/confirm-create-reserve.tsx index 4e3b6748f..f957364c4 100644 --- a/src/webex/pages/confirm-create-reserve.tsx +++ b/src/webex/pages/confirm-create-reserve.tsx @@ -41,7 +41,7 @@ import { getReserveCreationInfo, } from "../wxApi"; -import {renderAmount} from "../renderHtml"; +import {Collapsible, renderAmount} from "../renderHtml"; import * as React from "react"; import * as ReactDOM from "react-dom"; @@ -80,40 +80,6 @@ class EventTrigger { } -interface CollapsibleState { - collapsed: boolean; -} - -interface CollapsibleProps { - initiallyCollapsed: boolean; - title: string; -} - -class Collapsible extends React.Component<CollapsibleProps, CollapsibleState> { - constructor(props: CollapsibleProps) { - super(props); - this.state = { collapsed: props.initiallyCollapsed }; - } - render() { - const doOpen = (e: any) => { - this.setState({collapsed: false}); - e.preventDefault(); - }; - const doClose = (e: any) => { - this.setState({collapsed: true}); - e.preventDefault(); - }; - if (this.state.collapsed) { - return <h2><a className="opener opener-collapsed" href="#" onClick={doOpen}>{this.props.title}</a></h2>; - } - return ( - <div> - <h2><a className="opener opener-open" href="#" onClick={doClose}>{this.props.title}</a></h2> - {this.props.children} - </div> - ); - } -} function renderAuditorDetails(rci: ReserveCreationInfo|null) { console.log("rci", rci); diff --git a/src/webex/pages/error.tsx b/src/webex/pages/error.tsx index 3f3940d72..2edef5e5b 100644 --- a/src/webex/pages/error.tsx +++ b/src/webex/pages/error.tsx @@ -29,6 +29,8 @@ import URI = require("urijs"); import * as wxApi from "../wxApi"; +import { Collapsible } from "../renderHtml"; + interface ErrorProps { report: any; } @@ -38,7 +40,7 @@ class ErrorView extends React.Component<ErrorProps, { }> { const report = this.props.report; if (!report) { return ( - <div> + <div id="main"> <h1>Error Report Not Found</h1> <p>This page is supposed to display an error reported by the GNU Taler wallet, but the corresponding error report can't be found.</p> @@ -46,15 +48,47 @@ class ErrorView extends React.Component<ErrorProps, { }> { </div> ); } - switch (report.name) { - default: + try { + switch (report.name) { + case "pay-post-failed": { + const summary = report.contractTerms.summary || report.contractTerms.order_id; + return ( + <div id="main"> + <h1>Failed to send payment</h1> + <p>Failed to send payment for <strong>{summary}</strong> to merchant <strong>{report.contractTerms.merchant.name}</strong>.</p> + <p>You can <a href={report.contractTerms.fulfillment_url}>retry</a> the payment. If this problem persists, + please contact the mechant with the error details below.</p> + <Collapsible initiallyCollapsed={true} title="Error Details"> + <pre> + {JSON.stringify(report, null, " ")} + </pre> + </Collapsible> + </div> + ); + } + default: + return ( + <div id="main"> + <h1>Unknown Error</h1> + The GNU Taler wallet reported an unknown error. Here are the details: + <pre> + {JSON.stringify(report, null, " ")} + </pre> + </div> + ); + } + } catch (e) { return ( - <div> - <h1>Unknown Error</h1> - The GNU Taler wallet reported an unknown error. Here are the details: + <div id="main"> + <h1>Error</h1> + The GNU Taler wallet reported an error. Here are the details: <pre> {JSON.stringify(report, null, " ")} </pre> + A detailed error report could not be generated: + <pre> + {e.toString()} + </pre> </div> ); } |