diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-30 17:08:54 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-30 17:08:54 +0200 |
commit | 008926b18470e7f394cd640302957b29728a9803 (patch) | |
tree | 45f914f5117116bb3af5010f9e7570e99b015952 /src/webex/pages/confirm-contract.tsx | |
parent | 24e021fef360448caf11ab5a489b570102e66f6f (diff) | |
download | wallet-core-008926b18470e7f394cd640302957b29728a9803.tar.xz |
compute full fees for refresh and spending
Diffstat (limited to 'src/webex/pages/confirm-contract.tsx')
-rw-r--r-- | src/webex/pages/confirm-contract.tsx | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/src/webex/pages/confirm-contract.tsx b/src/webex/pages/confirm-contract.tsx index fa71b1028..5436cb5a6 100644 --- a/src/webex/pages/confirm-contract.tsx +++ b/src/webex/pages/confirm-contract.tsx @@ -25,12 +25,13 @@ */ import * as i18n from "../../i18n"; import { + CheckPayResult, ContractTerms, ExchangeRecord, ProposalRecord, } from "../../types"; -import { renderContractTerms } from "../renderHtml"; +import { renderAmount } from "../renderHtml"; import * as wxApi from "../wxApi"; import * as React from "react"; @@ -113,6 +114,7 @@ interface ContractPromptState { * when pressing pay. */ holdCheck: boolean; + payStatus?: CheckPayResult; } class ContractPrompt extends React.Component<ContractPromptProps, ContractPromptState> { @@ -150,7 +152,7 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt return; } const payStatus = await wxApi.checkPay(this.props.proposalId); - if (payStatus === "insufficient-balance") { + if (payStatus.status === "insufficient-balance") { const msgInsufficient = i18n.str`You have insufficient funds of the requested currency in your wallet.`; // tslint:disable-next-line:max-line-length const msgNoMatch = i18n.str`You do not have any funds from an exchange that is accepted by this merchant. None of the exchanges accepted by the merchant is known to your wallet.`; @@ -166,10 +168,10 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt this.setState({error: msgInsufficient}); } this.setState({payDisabled: true}); - } else if (payStatus === "paid") { - this.setState({alreadyPaid: true, payDisabled: false, error: null}); + } else if (payStatus.status === "paid") { + this.setState({alreadyPaid: true, payDisabled: false, error: null, payStatus}); } else { - this.setState({payDisabled: false, error: null}); + this.setState({payDisabled: false, error: null, payStatus}); } } @@ -189,7 +191,7 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt document.location.href = proposal.contractTerms.fulfillment_url; break; } - this.setState({holdCheck: false}); + this.setState({holdCheck: true}); } @@ -198,15 +200,36 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt return <span>...</span>; } const c = this.state.proposal.contractTerms; + let merchantName; + if (c.merchant && c.merchant.name) { + merchantName = <strong>{c.merchant.name}</strong>; + } else { + merchantName = <strong>(pub: {c.merchant_pub})</strong>; + } + const amount = <strong>{renderAmount(c.amount)}</strong>; + console.log("payStatus", this.state.payStatus); return ( <div> <div> - {renderContractTerms(c)} + <i18n.Translate wrap="p"> + The merchant <span>{merchantName}</span> {" "} + offers you to purchase: + </i18n.Translate> + <ul> + {c.products.map( + (p: any, i: number) => (<li key={i}>{p.description}: {renderAmount(p.price)}</li>)) + } + </ul> + {(this.state.payStatus && this.state.payStatus.coinSelection) ? + <p>The total price is <span>{amount}</span> (plus <span>{renderAmount(this.state.payStatus.coinSelection.totalFees)}</span> fees).</p> + : + <p>The total price is <span>{amount}</span>.</p> + } </div> - <button onClick={() => this.doPayment()} + <button className="pure-button button-success" disabled={this.state.payDisabled} - className="accept"> - Confirm payment + onClick={() => this.doPayment()}> + {i18n.str`Confirm payment`} </button> <div> {(this.state.alreadyPaid ? <p className="okaybox">You already paid for this, clicking "Confirm payment" will not cost money again.</p> : <p />)} |