/*
 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 { Logger, TranslatedString } from "@gnu-taler/taler-util";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { ComponentChildren, Fragment, h, VNode } from "preact";
import { StateUpdater, useEffect, useState } from "preact/hooks";
import talerLogo from "../assets/logo-white.svg";
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 { ErrorMessage, onNotificationUpdate } from "../hooks/notification.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");
function MaybeBusinessButton({
  account,
  onClick,
}: {
  account: string;
  onClick: () => void;
}): VNode {
  const { i18n } = useTranslationContext();
  const result = useBusinessAccountDetails(account);
  if (!result.ok) return ;
  return (
     {
        e.preventDefault();
        onClick();
      }}
    >{i18n.str`Business Profile`}
  );
}
export function BankFrame({
  children,
  goToBusinessAccount,
}: {
  children: ComponentChildren;
  goToBusinessAccount?: () => void;
}): VNode {
  const { i18n } = useTranslationContext();
  const backend = useBackendContext();
  const [settings, updateSettings] = useSettings();
  const demo_sites = [];
  for (const i in bankUiSettings.demoSites)
    demo_sites.push(
      
        {bankUiSettings.demoSites[i][0]}
      ,
    );
  return (
    
      
      
      
      
    
  );
}
function maybeDemoContent(content: VNode): VNode {
  if (bankUiSettings.showDemoNav) {
    return content;
  }
  return ;
}
export function ErrorBannerFloat({
  error,
  onClear,
}: {
  error: ErrorMessage;
  onClear?: () => void;
}): VNode {
  return (
    
      
    
  );
}
function ErrorBanner({
  error,
  onClear,
}: {
  error: ErrorMessage;
  onClear?: () => void;
}): VNode {
  return (
    
  );
}
function StatusBanner(): VNode | null {
  const [info, setInfo] = useState();
  const [error, setError] = useState();
  useEffect(() => {
    return onNotificationUpdate((newValue) => {
      if (newValue === undefined) {
        setInfo(undefined);
        setError(undefined);
      } else {
        if (newValue.type === "error") {
          setError(newValue.error);
        } else {
          setInfo(newValue.info);
        }
      }
    });
  }, []);
  return (
    
      {!info ? undefined : (
        
      )}
      {!error ? undefined : (
        
 {
            setError(undefined);
          }}
        />
      )}