/* This file is part of GNU Taler (C) 2021 Taler Systems S.A. GNU 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. GNU 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 GNU Taler; see the file COPYING. If not, see */ /** * * @author Sebastian Javier Marchano (sebasjm) */ import { classifyTalerUri, TalerUriType, i18n } from "@gnu-taler/taler-util"; import { Fragment, h } from "preact"; import { ButtonPrimary, ButtonSuccess } from "../components/styled"; import { actionForTalerUri } from "../utils/index"; export interface Props { url: string; onDismiss: () => void; } async function getCurrentTab(): Promise { let queryOptions = { active: true, currentWindow: true }; const tab = await new Promise((res, rej) => { chrome.tabs.query(queryOptions, (tabs) => { res(tabs[0]); }); }); return tab; } async function navigateTo(url?: string) { if (!url) return; const tab = await getCurrentTab(); if (!tab.id) return; await chrome.tabs.update(tab.id, { url }); window.close(); } export function TalerActionFound({ url, onDismiss }: Props) { const uriType = classifyTalerUri(url); return (

Taler Action

{uriType === TalerUriType.TalerPay && (

This page has pay action.

{ navigateTo(actionForTalerUri(uriType, url)); }} > Open pay page
)} {uriType === TalerUriType.TalerWithdraw && (

This page has a withdrawal action.

{ navigateTo(actionForTalerUri(uriType, url)); }} > Open withdraw page
)} {uriType === TalerUriType.TalerTip && (

This page has a tip action.

{ navigateTo(actionForTalerUri(uriType, url)); }} > Open tip page
)} {uriType === TalerUriType.TalerNotifyReserve && (

This page has a notify reserve action.

{ navigateTo(actionForTalerUri(uriType, url)); }} > Notify
)} {uriType === TalerUriType.TalerRefund && (

This page has a refund action.

{ navigateTo(actionForTalerUri(uriType, url)); }} > Open refund page
)} {uriType === TalerUriType.Unknown && (

This page has a malformed taler uri.

{url}

)}
); }