/* 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 { ComponentChildren, Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { Alert as AlertNotification, useAlertContext, } from "../context/alert.js"; import { Alert } from "../mui/Alert.js"; import { useTranslationContext } from "@gnu-taler/web-util/browser"; /** * * @author sebasjm */ function AlertContext({ context, cause, }: { cause: unknown; context: undefined | object; }): VNode { const [more, setMore] = useState(false); const [wrap, setWrap] = useState(false); const { i18n } = useTranslationContext(); if (!more) { return (
setMore(true)} style={{ cursor: "pointer", textDecoration: "underline" }} > more info
); } const errorInfo = JSON.stringify( context === undefined ? { cause } : { context, cause }, undefined, 2, ); return (
setWrap(!wrap)} style={{ cursor: "pointer", textDecoration: "underline" }} > wrap text    navigator.clipboard.writeText(errorInfo)} style={{ cursor: "pointer", textDecoration: "underline" }} > copy content    setMore(false)} style={{ cursor: "pointer", textDecoration: "underline" }} > less info
        {errorInfo}
      
); } export function ErrorAlertView({ error, onClose, }: { error: AlertNotification; onClose?: () => Promise; }): VNode { return ( ); } export function AlertView({ alert, onClose, }: { alert: AlertNotification; onClose?: () => Promise; }): VNode { return (
{alert.description}
{alert.type === "error" && alert.cause !== undefined ? ( ) : undefined}
); } export function CurrentAlerts(): VNode { const { alerts, removeAlert } = useAlertContext(); if (alerts.length === 0) return ; return ( {alerts.map((n, i) => ( removeAlert(n)} /> ))} ); } function Wrapper({ children }: { children: ComponentChildren }): VNode { return
{children}
; }