/* This file is part of TALER (C) 2017 GNUnet e.V. TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. TALER is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with TALER; see the file COPYING. If not, see */ /** * Page shown to the user to confirm creation * of a reserve, usually requested by the bank. * * @author Florian Dold */ import * as React from "react"; import * as ReactDOM from "react-dom"; import URI = require("urijs"); import * as i18n from "../../i18n"; import { acceptTip, getTipStatus, } from "../wxApi"; import { renderAmount, WithdrawDetailView } from "../renderHtml"; import { Amounts, TipStatus } from "../../types"; interface TipDisplayProps { merchantDomain: string; tipId: string; } interface TipDisplayState { tipStatus?: TipStatus; working: boolean; } class TipDisplay extends React.Component { constructor(props: TipDisplayProps) { super(props); this.state = { working: false }; } async update() { let tipStatus = await getTipStatus(this.props.merchantDomain, this.props.tipId); this.setState({ tipStatus }); } componentDidMount() { this.update(); const port = chrome.runtime.connect(); port.onMessage.addListener((msg: any) => { if (msg.notify) { console.log("got notified"); this.update(); } }); this.update(); } renderExchangeInfo(ts: TipStatus) { const rci = ts.rci; if (!rci) { return

Waiting for info about exchange ...

} const totalCost = Amounts.add(rci.overhead, rci.withdrawFee).amount; return (

The tip is handled by the exchange {rci.exchangeInfo.baseUrl}.{" "} The exchange provider will charge {" "} {renderAmount(totalCost)} {" "}.

); } accept() { this.setState({ working: true}); acceptTip(this.props.merchantDomain, this.props.tipId); } renderButtons() { return (