import { OperationFail, OperationOk, OperationResult, TalerError, TranslatedString } from "@gnu-taler/taler-util"; // import { NotificationMessage, notifyInfo } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; import { HTMLAttributes, useEffect, useState, useTransition } from "preact/compat"; import { NotificationMessage, buildRequestErrorMessage, notifyInfo, useTranslationContext } from "../index.browser.js"; // import { useBankCoreApiContext } from "../context/config.js"; // function errorMap>(resp: T, map: (d: T["case"]) => TranslatedString): void { export interface ButtonHandler, A, B> { onClick: () => Promise, onNotification: (n: NotificationMessage) => void; onOperationSuccess: ((result:T extends OperationOk ? T :never) => void) | ((result:T extends OperationOk ? T :never) => TranslatedString | undefined), onOperationFail: (d: T extends OperationFail ? T : never) => TranslatedString; onOperationComplete?: () => void; } interface Props, A, B> extends HTMLAttributes { handler: ButtonHandler | undefined, } /** * This button accept an async function and report a notification * on error or success. * * When the async function is running the inner text will change into * a "loading" animation. * * @param param0 * @returns */ export function Button, A, B>({ handler, children, disabled, onClick:clickEvent, ...rest }: Props): VNode { const {i18n} = useTranslationContext(); const [running, setRunning] = useState(false) return } function Wait():VNode { return
}