import * as yup from "yup" import {ReactElement, useContext} from "react" import {useFormik} from "formik" import {MdLock} from "react-icons/md" import {useTranslation} from "react-i18next" import {InputAdornment} from "@mui/material" import {buildEncryptionPassword} from "~/utils" import {useNavigateToNext, useUser} from "~/hooks" import {PasswordField, SimpleForm} from "~/components" import AuthContext from "~/AuthContext/AuthContext" interface Form { password: string } export default function EnterDecryptionPassword(): ReactElement { const {t} = useTranslation() const navigateToNext = useNavigateToNext() const user = useUser() const {_setDecryptionPassword} = useContext(AuthContext) const schema = yup.object().shape({ password: yup .string() .required() .label(t("components.EnterDecryptionPassword.form.password.label")), }) const formik = useFormik
({ validationSchema: schema, initialValues: { password: "", }, onSubmit: async ({password}, {setErrors}) => { const decryptionPassword = buildEncryptionPassword(password, user.email.address) if (!_setDecryptionPassword(decryptionPassword)) { setErrors({ password: t( "components.EnterDecryptionPassword.form.password.errors.invalidPassword", ), }) } else { setTimeout(navigateToNext, 0) } }, }) return ( {[ ), }} />, ]}
) }