diff --git a/src/libs/actions/PersonalDetails.ts b/src/libs/actions/PersonalDetails.ts index 94a9dc95e846..6de62db4854e 100644 --- a/src/libs/actions/PersonalDetails.ts +++ b/src/libs/actions/PersonalDetails.ts @@ -465,6 +465,15 @@ function clearAvatarErrors() { }); } +/** + * Clear errors for the current user's personal details + */ +function clearPersonalDetailsErrors() { + Onyx.merge(ONYXKEYS.PRIVATE_PERSONAL_DETAILS, { + errors: null, + }); +} + function updatePersonalDetailsAndShipExpensifyCards(values: FormOnyxValues, validateCode: string) { const parameters: SetPersonalDetailsAndShipExpensifyCardsParams = { legalFirstName: values.legalFirstName?.trim() ?? '', @@ -504,6 +513,15 @@ function updatePersonalDetailsAndShipExpensifyCards(values: FormOnyxValues; @@ -36,9 +35,6 @@ const formSteps = [LegalName, DateOfBirth, Address, PhoneNumber, Confirmation]; function MissingPersonalDetailsContent({privatePersonalDetails, draftValues}: MissingPersonalDetailsContentProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [account] = useOnyx(ONYXKEYS.ACCOUNT); - const [validateCodeAction] = useOnyx(ONYXKEYS.VALIDATE_ACTION_CODE); - const primaryLogin = account?.primaryLogin ?? ''; const [isValidateCodeActionModalVisible, setIsValidateCodeActionModalVisible] = useState(false); const ref: ForwardedRef = useRef(null); @@ -82,9 +78,7 @@ function MissingPersonalDetailsContent({privatePersonalDetails, draftValues}: Mi const handleSubmitForm = useCallback( (validateCode: string) => { - PersonalDetails.updatePersonalDetailsAndShipExpensifyCards(values, validateCode); - FormActions.clearDraftValues(ONYXKEYS.FORMS.PERSONAL_DETAILS_FORM); - Navigation.goBack(); + updatePersonalDetailsAndShipExpensifyCards(values, validateCode); }, [values], ); diff --git a/src/pages/MissingPersonalDetails/MissingPersonalDetailsMagicCodeModal.tsx b/src/pages/MissingPersonalDetails/MissingPersonalDetailsMagicCodeModal.tsx index f06e11175048..2f47022c1667 100644 --- a/src/pages/MissingPersonalDetails/MissingPersonalDetailsMagicCodeModal.tsx +++ b/src/pages/MissingPersonalDetails/MissingPersonalDetailsMagicCodeModal.tsx @@ -3,11 +3,12 @@ import {useOnyx} from 'react-native-onyx'; import ValidateCodeActionModal from '@components/ValidateCodeActionModal'; import useLocalize from '@hooks/useLocalize'; import * as FormActions from '@libs/actions/FormActions'; +import {clearPersonalDetailsErrors} from '@libs/actions/PersonalDetails'; import {requestValidateCodeAction} from '@libs/actions/User'; import * as ErrorUtils from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; -import * as Delegate from '@userActions/Delegate'; import ONYXKEYS from '@src/ONYXKEYS'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; type MissingPersonalDetailsMagicCodeModalProps = { handleSubmitForm: (validateCode: string) => void; @@ -20,17 +21,26 @@ function MissingPersonalDetailsMagicCodeModal({onClose, isValidateCodeActionModa const [privatePersonalDetails] = useOnyx(ONYXKEYS.PRIVATE_PERSONAL_DETAILS); const [account] = useOnyx(ONYXKEYS.ACCOUNT); const [validateCodeAction] = useOnyx(ONYXKEYS.VALIDATE_ACTION_CODE); - const validateLoginError = ErrorUtils.getLatestError(); - const privateDetailValidated = privatePersonalDetails?.validated; + const privateDetailsErrors = privatePersonalDetails?.errors ?? undefined; + const validateLoginError = ErrorUtils.getLatestError(privateDetailsErrors); const primaryLogin = account?.primaryLogin ?? ''; + + const missingDetails = + !privatePersonalDetails?.legalFirstName || + !privatePersonalDetails?.legalLastName || + !privatePersonalDetails?.dob || + !privatePersonalDetails?.phoneNumber || + isEmptyObject(privatePersonalDetails?.addresses) || + privatePersonalDetails.addresses.length === 0; + useEffect(() => { - if (!privateDetailValidated) { + if (missingDetails || !!privateDetailsErrors || privatePersonalDetails?.isValidating) { return; } FormActions.clearDraftValues(ONYXKEYS.FORMS.PERSONAL_DETAILS_FORM); Navigation.goBack(); - }, [privateDetailValidated]); + }, [missingDetails, privateDetailsErrors, privatePersonalDetails?.isValidating]); const sendValidateCode = () => { if (validateCodeAction?.validateCodeSent) { @@ -48,9 +58,9 @@ function MissingPersonalDetailsMagicCodeModal({onClose, isValidateCodeActionModa if (!validateLoginError) { return; } - Delegate.clearDelegateErrorsByField(currentDelegate?.email ?? '', 'addDelegate'); + clearPersonalDetailsErrors(); }; - + return (