/* This file is part of TALER (C) 2015-2016 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 i18n from "../i18n"; import { WithdrawDetailView, renderAmount } from "../renderHtml"; import React, { useState, useEffect } from "react"; import { acceptWithdrawal, onUpdateNotification, getWithdrawalDetailsForUri, } from "../wxApi"; import { WithdrawUriInfoResponse } from "taler-wallet-core"; function WithdrawalDialog(props: { talerWithdrawUri: string }): JSX.Element { const [details, setDetails] = useState(); const [selectedExchange, setSelectedExchange] = useState< string | undefined >(); const talerWithdrawUri = props.talerWithdrawUri; const [cancelled, setCancelled] = useState(false); const [selecting, setSelecting] = useState(false); const [errMsg, setErrMsg] = useState(""); const [updateCounter, setUpdateCounter] = useState(1); useEffect(() => { return onUpdateNotification(() => { setUpdateCounter(updateCounter + 1); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { const fetchData = async (): Promise => { const res = await getWithdrawalDetailsForUri({ talerWithdrawUri: props.talerWithdrawUri, }); setDetails(res); if (res.defaultExchangeBaseUrl) { setSelectedExchange(res.defaultExchangeBaseUrl); } }; fetchData(); }, [selectedExchange, errMsg, selecting, talerWithdrawUri, updateCounter]); if (!details) { return Loading...; } if (cancelled) { return Withdraw operation has been cancelled.; } const accept = async (): Promise => { if (!selectedExchange) { throw Error("can't accept, no exchange selected"); } console.log("accepting exchange", selectedExchange); const res = await acceptWithdrawal(talerWithdrawUri, selectedExchange); console.log("accept withdrawal response", res); if (res.confirmTransferUrl) { document.location.href = res.confirmTransferUrl; } }; return (

Digital Cash Withdrawal

You are about to withdraw{" "} {renderAmount(details.amount)} from your bank account into your wallet. {selectedExchange ? (

The exchange {selectedExchange} will be used as the Taler payment service provider.

) : null}

setSelecting(true)} > {i18n.str`Chose different exchange provider`}
setCancelled(true)} > {i18n.str`Cancel withdraw operation`}

); } export function createWithdrawPage(): JSX.Element { const url = new URL(document.location.href); const talerWithdrawUri = url.searchParams.get("talerWithdrawUri"); if (!talerWithdrawUri) { throw Error("withdraw URI required"); } return ; }