diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-06-01 18:46:07 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-06-01 18:46:07 +0200 |
commit | 29b107f93763420c5bc0cbde38c68e40e705ff38 (patch) | |
tree | af659996507b043d1c21c61c56d639f926402033 /src/webex | |
parent | 26467674ba430707ffcdeb19b456dd2e325450bc (diff) |
fix terminology, better types
Diffstat (limited to 'src/webex')
-rw-r--r-- | src/webex/notify.ts | 19 | ||||
-rw-r--r-- | src/webex/pages/confirm-contract.tsx | 12 | ||||
-rw-r--r-- | src/webex/renderHtml.tsx | 14 | ||||
-rw-r--r-- | src/webex/wxApi.ts | 3 |
4 files changed, 28 insertions, 20 deletions
diff --git a/src/webex/notify.ts b/src/webex/notify.ts index 2f38658bd..09c5ae002 100644 --- a/src/webex/notify.ts +++ b/src/webex/notify.ts @@ -28,6 +28,8 @@ import URI = require("urijs"); import wxApi = require("./wxApi"); +import { QueryPaymentResult } from "../types"; + declare var cloneInto: any; let logVerbose: boolean = false; @@ -96,7 +98,12 @@ function setStyles(installed: boolean) { } -function handlePaymentResponse(walletResp: any) { +function handlePaymentResponse(maybeFoundResponse: QueryPaymentResult) { + if (!maybeFoundResponse.found) { + console.log("pay-failed", {hint: "payment not found in the wallet"}); + return; + } + const walletResp = maybeFoundResponse; /** * Handle a failed payment. * @@ -115,7 +122,7 @@ function handlePaymentResponse(walletResp: any) { } timeoutHandle = window.setTimeout(onTimeout, 200); - await wxApi.paymentFailed(walletResp.H_contract); + await wxApi.paymentFailed(walletResp.contractTermsHash); if (timeoutHandle !== null) { clearTimeout(timeoutHandle); timeoutHandle = null; @@ -131,7 +138,7 @@ function handlePaymentResponse(walletResp: any) { let timeoutHandle: number|null = null; function sendPay() { r = new XMLHttpRequest(); - r.open("post", walletResp.contract.pay_url); + r.open("post", walletResp.contractTerms.pay_url); r.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); r.send(JSON.stringify(walletResp.payReq)); r.onload = async () => { @@ -142,8 +149,8 @@ function handlePaymentResponse(walletResp: any) { case 200: const merchantResp = JSON.parse(r.responseText); logVerbose && console.log("got success from pay_url"); - await wxApi.paymentSucceeded(walletResp.H_contract, merchantResp.sig); - const nextUrl = walletResp.contract.fulfillment_url; + await wxApi.paymentSucceeded(walletResp.contractTermsHash, merchantResp.sig); + const nextUrl = walletResp.contractTerms.fulfillment_url; logVerbose && console.log("taler-payment-succeeded done, going to", nextUrl); window.location.href = nextUrl; window.location.reload(true); @@ -318,7 +325,7 @@ function talerPay(msg: any): Promise<any> { const url = new URI(document.location.href).fragment("").href(); const res = await wxApi.queryPayment(url); logVerbose && console.log("taler-pay: got response", res); - if (res && res.payReq) { + if (res && res.found && res.payReq) { resolve(res); return; } diff --git a/src/webex/pages/confirm-contract.tsx b/src/webex/pages/confirm-contract.tsx index c5513f7c6..e80aed19d 100644 --- a/src/webex/pages/confirm-contract.tsx +++ b/src/webex/pages/confirm-contract.tsx @@ -25,12 +25,12 @@ */ import * as i18n from "../../i18n"; import { - Contract, + ContractTerms, ExchangeRecord, ProposalRecord, } from "../../types"; -import { renderContract } from "../renderHtml"; +import { renderContractTerms } from "../renderHtml"; import * as wxApi from "../wxApi"; import * as React from "react"; @@ -43,7 +43,7 @@ interface DetailState { } interface DetailProps { - contract: Contract; + contractTerms: ContractTerms; collapsed: boolean; exchanges: null|ExchangeRecord[]; } @@ -82,7 +82,7 @@ class Details extends React.Component<DetailProps, DetailState> { <div> {i18n.str`Accepted exchanges:`} <ul> - {this.props.contract.exchanges.map( + {this.props.contractTerms.exchanges.map( (e) => <li>{`${e.url}: ${e.master_pub}`}</li>)} </ul> {i18n.str`Exchanges in the wallet:`} @@ -185,7 +185,7 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt return ( <div> <div> - {renderContract(c)} + {renderContractTerms(c)} </div> <button onClick={() => this.doPayment()} disabled={this.state.payDisabled} @@ -195,7 +195,7 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt <div> {(this.state.error ? <p className="errorbox">{this.state.error}</p> : <p />)} </div> - <Details exchanges={this.state.exchanges} contract={c} collapsed={!this.state.error}/> + <Details exchanges={this.state.exchanges} contractTerms={c} collapsed={!this.state.error}/> </div> ); } diff --git a/src/webex/renderHtml.tsx b/src/webex/renderHtml.tsx index 70cd61d62..4dd7baded 100644 --- a/src/webex/renderHtml.tsx +++ b/src/webex/renderHtml.tsx @@ -27,7 +27,7 @@ import { amountToPretty } from "../helpers"; import * as i18n from "../i18n"; import { - Contract, + ContractTerms, } from "../types"; import * as React from "react"; @@ -35,14 +35,14 @@ import * as React from "react"; /** * Render contract terms for the end user to view. */ -export function renderContract(contract: Contract): JSX.Element { +export function renderContractTerms(contractTerms: ContractTerms): JSX.Element { let merchantName; - if (contract.merchant && contract.merchant.name) { - merchantName = <strong>{contract.merchant.name}</strong>; + if (contractTerms.merchant && contractTerms.merchant.name) { + merchantName = <strong>{contractTerms.merchant.name}</strong>; } else { - merchantName = <strong>(pub: {contract.merchant_pub})</strong>; + merchantName = <strong>(pub: {contractTerms.merchant_pub})</strong>; } - const amount = <strong>{amountToPretty(contract.amount)}</strong>; + const amount = <strong>{amountToPretty(contractTerms.amount)}</strong>; return ( <div> @@ -53,7 +53,7 @@ export function renderContract(contract: Contract): JSX.Element { </i18n.Translate> <p>{i18n.str`You are about to purchase:`}</p> <ul> - {contract.products.map( + {contractTerms.products.map( (p: any, i: number) => (<li key={i}>{`${p.description}: ${amountToPretty(p.price)}`}</li>)) } </ul> diff --git a/src/webex/wxApi.ts b/src/webex/wxApi.ts index 4babb2a79..1968b6575 100644 --- a/src/webex/wxApi.ts +++ b/src/webex/wxApi.ts @@ -33,6 +33,7 @@ import { PreCoinRecord, ReserveCreationInfo, ReserveRecord, + QueryPaymentResult, } from "../types"; import { MessageType, MessageMap } from "./messages"; @@ -213,7 +214,7 @@ export function confirmReserve(reservePub: string): Promise<void> { /** * Query for a payment by fulfillment URL. */ -export function queryPayment(url: string): Promise<any> { +export function queryPayment(url: string): Promise<QueryPaymentResult> { return callBackend("query-payment", { url }); } |