/* This file is part of GNU Taler (C) 2022 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 */ import { Amounts, Logger, PaytoUriIBAN, TranslatedString, parsePaytoUri, stringifyPaytoUri } from "@gnu-taler/taler-util"; import { useNotifications, useTranslationContext } from "@gnu-taler/web-util/browser"; import { ComponentChildren, Fragment, h, VNode } from "preact"; import { StateUpdater, useEffect, useState } from "preact/hooks"; import { LangSelectorLikePy as LangSelector } from "../components/LangSelector.js"; import { useBackendContext } from "../context/backend.js"; import { useBusinessAccountDetails } from "../hooks/circuit.js"; import { bankUiSettings } from "../settings.js"; import { useSettings } from "../hooks/settings.js"; import { CopyButton, CopyIcon } from "../components/CopyButton.js"; import logo from "../assets/logo-2021.svg"; import { useAccountDetails } from "../hooks/access.js"; const IS_PUBLIC_ACCOUNT_ENABLED = false; const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined; const VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : undefined; const versionText = VERSION ? GIT_HASH ? `Version ${VERSION} (${GIT_HASH.substring(0, 8)})` : VERSION : ""; const logger = new Logger("BankFrame"); export function BankFrame({ children, account, }: { account?: string, children: ComponentChildren; }): VNode { const { i18n } = useTranslationContext(); const backend = useBackendContext(); const [settings, updateSettings] = useSettings(); const [open, setOpen] = useState(false) const demo_sites = []; for (const i in bankUiSettings.demoSites) demo_sites.push( {bankUiSettings.demoSites[i][0]} , ); return (
{account &&

}
{children}
// //
// //
//

// // {bankUiSettings.bankName} // //

// {maybeDemoContent( //

// {IS_PUBLIC_ACCOUNT_ENABLED ? ( // // This part of the demo shows how a bank that supports Taler // directly would work. In addition to using your own bank // account, you can also see the transaction history of some{" "} // Public Accounts. // // ) : ( // // This part of the demo shows how a bank that supports Taler // directly would work. // // )} //

, // )} //
//
// //
// // {children} //
//
); } // function maybeDemoContent(content: VNode): VNode { // if (bankUiSettings.showDemoNav) { // return content; // } // return ; // } // export function ErrorBannerFloat({ // error, // onClear, // }: { // error: ErrorMessage; // onClear?: () => void; // }): VNode { // return ( //
// //
// ); // } function StatusBanner(): VNode { const notifs = useNotifications() return
{ notifs.map(n => { const info = n.message.type === "info" ? n.message : undefined const error = n.message.type === "error" ? n.message : undefined switch (n.message.type) { case "error": return

{n.message.title}

{n.message.description &&
{n.message.description}
}
case "info": return

{n.message.title}

} })}
} function TestingTag(): VNode { const testingUrl = localStorage.getItem("bank-base-url"); if (!testingUrl) return ; return (

Testing with {testingUrl}{" "} { e.preventDefault(); localStorage.removeItem("bank-base-url"); window.location.reload(); }} > stop testing

); } function Footer() { return (

You can learn more about GNU Taler on our{" "} main website.

Copyright © 2014—2022 Taler Systems SA. {versionText}{" "}

); } function WelcomeAccount({ account }: { account: string }): VNode { const { i18n } = useTranslationContext(); const result = useAccountDetails(account); if (!result.ok) return
// const account = "Sebastian" const payto = parsePaytoUri(result.data.paytoUri) if (!payto) return
const accountNumber = !payto.isKnown ? undefined : payto.targetType === "iban" ? payto.iban : payto.targetType === "x-taler-bank" ? payto.account : undefined; return Welcome, {account} {accountNumber !== undefined ? ({accountNumber} result.data.paytoUri} />) : }! } function AccountBalance({ account }: { account: string }): VNode { const result = useAccountDetails(account); if (!result.ok) return
return
{Amounts.currencyOf(result.data.balance.amount)}  {result.data.balance.credit_debit_indicator === "debit" ? "-" : ""} {Amounts.stringifyValue(result.data.balance.amount)}
}