import { useState, useEffect } from "preact/hooks"; import { getDiagnostics } from "../wxApi"; import { PageLink } from "../renderHtml"; import { WalletDiagnostics } from "@gnu-taler/taler-util"; import { JSX } from "preact/jsx-runtime"; export function Diagnostics(): JSX.Element | null { const [timedOut, setTimedOut] = useState(false); const [diagnostics, setDiagnostics] = useState( undefined ); useEffect(() => { let gotDiagnostics = false; setTimeout(() => { if (!gotDiagnostics) { console.error("timed out"); setTimedOut(true); } }, 1000); const doFetch = async (): Promise => { const d = await getDiagnostics(); console.log("got diagnostics", d); gotDiagnostics = true; setDiagnostics(d); }; console.log("fetching diagnostics"); doFetch(); }, []); if (timedOut) { return

Diagnostics timed out. Could not talk to the wallet backend.

; } if (diagnostics) { if (diagnostics.errors.length === 0) { return null; } else { return (

Problems detected:

    {diagnostics.errors.map((errMsg) => (
  1. {errMsg}
  2. ))}
{diagnostics.firefoxIdbProblem ? (

Please check in your about:config settings that you have IndexedDB enabled (check the preference name{" "} dom.indexedDB.enabled).

) : null} {diagnostics.dbOutdated ? (

Your wallet database is outdated. Currently automatic migration is not supported. Please go{" "} here to reset the wallet database.

) : null}
); } } return

Running diagnostics ...

; }