import { PageProps } from "@ente/shared/apps/types"; import CodeBlock from "@ente/shared/components/CodeBlock"; import DialogTitleWithCloseButton from "@ente/shared/components/DialogBox/TitleWithCloseButton"; import { getRecoveryKey } from "@ente/shared/crypto/helpers"; import { downloadAsFile } from "@ente/shared/utils"; import { Button, Dialog, DialogActions, DialogContent, Typography, } from "@mui/material"; import * as bip39 from "bip39"; import { t } from "i18next"; import { useEffect, useState } from "react"; import { DashedBorderWrapper } from "./styledComponents"; // mobile client library only supports english. bip39.setDefaultWordlist("english"); const RECOVERY_KEY_FILE_NAME = "ente-recovery-key.txt"; interface Props { appContext: PageProps["appContext"]; show: boolean; onHide: () => void; somethingWentWrong: any; } function RecoveryKey({ somethingWentWrong, appContext, ...props }: Props) { const [recoveryKey, setRecoveryKey] = useState(null); useEffect(() => { if (!props.show) { return; } const main = async () => { try { const recoveryKey = await getRecoveryKey(); setRecoveryKey(bip39.entropyToMnemonic(recoveryKey)); } catch (e) { somethingWentWrong(); props.onHide(); } }; main(); }, [props.show]); function onSaveClick() { downloadAsFile(RECOVERY_KEY_FILE_NAME, recoveryKey); props.onHide(); } return ( {t("RECOVERY_KEY")} {t("RECOVERY_KEY_DESCRIPTION")} {t("KEY_NOT_STORED_DISCLAIMER")} ); } export default RecoveryKey;