import { bytesToString, decodeCrock, encodeCrock } from "@gnu-taler/taler-util"; import { h, VNode } from "preact"; import { useEffect, useState } from "preact/hooks"; import { stringToBytes } from "qrcode-generator"; import { QR } from "../../components/QR"; import { useAnastasisContext } from "../../context/anastasis"; import { AnastasisClientFrame } from "./index"; export function RecoveryFinishedScreen(): VNode { const reducer = useAnastasisContext(); const [copied, setCopied] = useState(false); useEffect(() => { setTimeout(() => { setCopied(false); }, 1000); }, [copied]); if (!reducer) { return
no reducer in context
; } if ( !reducer.currentReducerState || reducer.currentReducerState.recovery_state === undefined ) { return
invalid state
; } const secretName = reducer.currentReducerState.recovery_document?.secret_name; const encodedSecret = reducer.currentReducerState.core_secret; if (!encodedSecret) { return (

Secret not found

); } const secret = bytesToString(decodeCrock(encodedSecret.value)); const contentURI = `data:${encodedSecret.mime},${secret}`; // const fileName = encodedSecret['filename'] // data:plain/text;base64,asdasd return (

Your secret was recovered

{secretName && (

Secret name: {secretName}

)}
Save as
); }