/* This file is part of GNU Taler (C) 2020 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 */ /** * Main entry point for extension pages. * * @author sebasjm */ import { createHashHistory } from "history"; import { Fragment, h, VNode } from "preact"; import Router, { route, Route } from "preact-router"; import { Match } from "preact-router/match"; import { useEffect, useState } from "preact/hooks"; import PendingTransactions from "../components/PendingTransactions.js"; import { PopupBox } from "../components/styled/index.js"; import { DevContextProvider } from "../context/devContext.js"; import { IoCProviderForRuntime } from "../context/iocContext.js"; import { TranslationProvider, useTranslationContext, } from "../context/translation.js"; import { useTalerActionURL } from "../hooks/useTalerActionURL.js"; import { Pages, PopupNavBar } from "../NavigationBar.js"; import { platform } from "../platform/api.js"; import { BackupPage } from "../wallet/BackupPage.js"; import { ProviderDetailPage } from "../wallet/ProviderDetailPage.js"; import { BalancePage } from "./BalancePage.js"; import { TalerActionFound } from "./TalerActionFound.js"; function CheckTalerActionComponent(): VNode { const [talerActionUrl] = useTalerActionURL(); useEffect(() => { if (talerActionUrl) route(Pages.cta.replace(":action", encodeURIComponent(talerActionUrl))); }, [talerActionUrl]); return ; } export function Application(): VNode { const hash_history = createHashHistory(); return ( {({ devMode }: { devMode: boolean }) => ( route(Pages.balance_transaction.replace(":tid", txId)) } /> {({ path }: { path: string }) => } route( Pages.balance_manual_withdraw.replace(":currency?", ""), ) } goToWalletDeposit={(currency: string) => route(Pages.balance_deposit.replace(":currency", currency)) } goToWalletHistory={(currency: string) => route(Pages.balance_history.replace(":currency?", currency)) } /> { setDismissed(true); route(Pages.balance); }} /> ); }} /> { route(Pages.backup_provider_add); }} /> { route(Pages.backup); }} /> )} ); } function RedirectToWalletPage(): VNode { const page = (document.location.hash || "#/").replace("#", ""); const [showText, setShowText] = useState(false); useEffect(() => { platform.openWalletPageFromPopup(page); setTimeout(() => { setShowText(true); }, 250); }); const { i18n } = useTranslationContext(); if (!showText) return ; return ( this popup is being closed and you are being redirected to {page} ); } function Redirect({ to }: { to: string }): null { useEffect(() => { route(to, true); }); return null; }