import { LibtoolVersion } from "@gnu-taler/taler-util"; import { useApiContext } from "@gnu-taler/web-util/browser"; import { useEffect, useState } from "preact/hooks"; import { getInitialBackendBaseURL } from "./backend.js"; /** * Protocol version spoken with the bank. * * Uses libtool's current:revision:age versioning. */ export const BANK_INTEGRATION_PROTOCOL_VERSION = "0:0:0"; async function getConfigState( request: ReturnType["request"], ): Promise { try { const url = getInitialBackendBaseURL(); const result = await request( url, `config`, ); return result.data; } catch (error) { return undefined; } } export function useConfigState(): boolean | undefined { const [checked, setChecked] = useState() const { request } = useApiContext(); useEffect(() => { getConfigState(request) .then((result) => { if (!result) { setChecked(false) } else { const r = LibtoolVersion.compare(BANK_INTEGRATION_PROTOCOL_VERSION, result.version) setChecked(r?.compatible); } }) .catch((error) => { setChecked(false); }); }); return checked; }