From d2d1f79c409a38a2501c5f72ccb02bf48f7a7426 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Fri, 1 Jul 2022 13:44:23 +0530 Subject: [PATCH] update forms to have success state --- src/components/ChangeEmail.tsx | 16 ++++++++-------- src/components/TwoFactor/VerifyForm.tsx | 19 +++++++++++++++++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/components/ChangeEmail.tsx b/src/components/ChangeEmail.tsx index 30125003f..018b35ded 100644 --- a/src/components/ChangeEmail.tsx +++ b/src/components/ChangeEmail.tsx @@ -1,17 +1,17 @@ import { Formik, FormikHelpers } from 'formik'; -import React, { useContext, useRef, useState } from 'react'; +import React, { useRef, useState } from 'react'; import * as Yup from 'yup'; import constants from 'utils/strings/constants'; import SubmitButton from 'components/SubmitButton'; import router from 'next/router'; import { changeEmail, getOTTForEmailChange } from 'services/userService'; -import { AppContext, FLASH_MESSAGE_TYPE } from 'pages/_app'; import { getData, LS_KEYS, setData } from 'utils/storage/localStorage'; import { PAGES } from 'constants/pages'; import { Alert, TextField } from '@mui/material'; import Container from './Container'; import LinkButton from './pages/gallery/LinkButton'; import FormPaperFooter from './Form/FormPaper/Footer'; +import { sleep } from 'utils/common'; interface formValues { email: string; @@ -22,9 +22,9 @@ function ChangeEmailForm() { const [loading, setLoading] = useState(false); const [ottInputVisible, setShowOttInputVisibility] = useState(false); const ottInputRef = useRef(null); - const appContext = useContext(AppContext); const [email, setEmail] = useState(null); const [showMessage, setShowMessage] = useState(false); + const [success, setSuccess] = useState(false); const requestOTT = async ( { email }: formValues, @@ -53,15 +53,14 @@ function ChangeEmailForm() { setLoading(true); await changeEmail(email, ott); setData(LS_KEYS.USER, { ...getData(LS_KEYS.USER), email }); - appContext.setDisappearingFlashMessage({ - message: constants.EMAIL_UDPATE_SUCCESSFUL, - type: FLASH_MESSAGE_TYPE.SUCCESS, - }); + setLoading(false); + setSuccess(true); + await sleep(1000); router.push(PAGES.GALLERY); } catch (e) { + setLoading(false); setFieldError('ott', `${constants.INCORRECT_CODE}`); } - setLoading(false); }; const goToGallery = () => router.push(PAGES.GALLERY); @@ -118,6 +117,7 @@ function ChangeEmailForm() { /> )} Promise +) => Promise; + export default function VerifyTwoFactor(props: Props) { const [waiting, setWaiting] = useState(false); const otpInputRef = useRef(null); + const [success, setSuccess] = useState(false); + + const markSuccessful = async () => { + setWaiting(false); + setSuccess(true); + await sleep(1000); + }; + const submitForm = async ( { otp }: formValues, { setFieldError, resetForm }: FormikHelpers ) => { try { setWaiting(true); - await props.onSubmit(otp); + await props.onSubmit(otp, markSuccessful); } catch (e) { resetForm(); for (let i = 0; i < 6; i++) { @@ -83,6 +97,7 @@ export default function VerifyTwoFactor(props: Props) {