/* 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 accept or ignore a tip from a merchant. * * @author Florian Dold */ import * as React from "react"; import { useEffect, useState } from "react"; import { PrepareTipResult } from "@gnu-taler/taler-wallet-core"; import { AmountView } from "../renderHtml"; import * as wxApi from "../wxApi"; function TalerTipDialog({ talerTipUri }: { talerTipUri: string }): JSX.Element { const [updateCounter, setUpdateCounter] = useState(0); const [prepareTipResult, setPrepareTipResult] = useState< PrepareTipResult | undefined >(); const [tipIgnored, setTipIgnored] = useState(false); useEffect(() => { const doFetch = async (): Promise => { const p = await wxApi.prepareTip({ talerTipUri }); setPrepareTipResult(p); }; doFetch(); }, [talerTipUri, updateCounter]); const doAccept = async () => { if (!prepareTipResult) { return; } await wxApi.acceptTip({ walletTipId: prepareTipResult?.walletTipId }); setUpdateCounter(updateCounter + 1); }; const doIgnore = () => { setTipIgnored(true); }; if (tipIgnored) { return You've ignored the tip.; } if (!prepareTipResult) { return Loading ...; } if (prepareTipResult.accepted) { return ( Tip from {prepareTipResult.merchantBaseUrl} accepted. Check your transactions list for more details. ); } else { return (

The merchant {prepareTipResult.merchantBaseUrl} is offering you a tip of{" "} via the exchange {prepareTipResult.exchangeBaseUrl}

); } } export function createTipPage(): JSX.Element { const url = new URL(document.location.href); const talerTipUri = url.searchParams.get("talerTipUri"); if (!talerTipUri) { throw Error("invalid parameter"); } return ; }