/* This file is part of GNU Anastasis (C) 2021-2022 Anastasis SARL GNU Anastasis is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Anastasis 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with GNU Anastasis; see the file COPYING. If not, see */ import { bytesToString, decodeCrock } from "@gnu-taler/taler-util"; import { h, VNode } from "preact"; import { useEffect, useState } from "preact/hooks"; import { QR } from "../../components/QR.js"; import { useAnastasisContext } from "../../context/anastasis.js"; import { AnastasisClientFrame } from "./index.js"; 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_type !== "recovery") { 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 plainText = encodedSecret.value.length < 1000 && encodedSecret.mime === "text/plain"; let [uri, setUri] = useState(`data:${encodedSecret.mime},${secret}`); fetch(`data:${encodedSecret.mime},${secret}`) // TODO: look into using new Blob .then((v) => v.blob()) .then((blob) => URL.createObjectURL(blob)) .then((newUri) => { setUri(newUri); }); return (

Your secret was recovered

{secretName && (

Secret name: {secretName}

)}
{plainText ? ( ) : undefined}
Download content
{plainText ? (
) : undefined}

); }