import React, { useState, useEffect, useContext } from 'react'; import Container from 'components/Container'; import styled from 'styled-components'; import Card from 'react-bootstrap/Card'; import Form from 'react-bootstrap/Form'; import constants from 'utils/strings/constants'; import { Formik, FormikHelpers } from 'formik'; import * as Yup from 'yup'; import Button from 'react-bootstrap/Button'; import { Spinner } from 'react-bootstrap'; import SubmitButton from './SubmitButton'; interface Props { callback: (passphrase: any, setFieldError: any) => Promise; buttonText: string; back: () => void; } interface formValues { passphrase: string; confirm: string; } function SetPassword(props: Props) { const [loading, setLoading] = useState(false); const onSubmit = async ( values: formValues, { setFieldError }: FormikHelpers ) => { setLoading(true); try { const { passphrase, confirm } = values; if (passphrase === confirm) { await props.callback(passphrase, setFieldError); } else { setFieldError('confirm', constants.PASSPHRASE_MATCH_ERROR); } } catch (e) { setFieldError( 'passphrase', `${constants.UNKNOWN_ERROR} ${e.message}` ); } finally { setLoading(false); } }; return (

{constants.ENTER_ENC_PASSPHRASE}

{constants.PASSPHRASE_DISCLAIMER()}
initialValues={{ passphrase: '', confirm: '' }} validationSchema={Yup.object().shape({ passphrase: Yup.string().required( constants.REQUIRED ), confirm: Yup.string().required(constants.REQUIRED), })} validateOnChange={false} validateOnBlur={false} onSubmit={onSubmit} > {({ values, touched, errors, handleChange, handleSubmit, }) => (
{errors.passphrase} {errors.confirm} )} {props.back && (
)}
); } export default SetPassword;