diff --git a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Email/UserDetails.tsx b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Email/UserDetails.tsx index 5bab522c0..f2accc7ec 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Email/UserDetails.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Email/UserDetails.tsx @@ -49,7 +49,10 @@ export const UserDetails = () => { } }, []); - const isSameEmail = Boolean(email && email === alternateEmail); + const isSameEmail = useMemo( + () => Boolean(email && email === alternateEmail), + [email, alternateEmail], + ); const [hasErrors, setHasErrors] = useState(false); const isFormIncomplete = useMemo( diff --git a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/ExecutorMessage.tsx b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/ExecutorMessage.tsx index 0b133634d..8ec48ea89 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/ExecutorMessage.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/ExecutorMessage.tsx @@ -42,6 +42,7 @@ export const ExecutorMessage = () => { onClick={onExecutorMessageSubmit} variant="primary" isLoading={isSubmittingExecutorDetails} + disabled={executorMessage.length < 1} > diff --git a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/NomineePrivateMessage.tsx b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/NomineePrivateMessage.tsx index fbc7b656e..f43f361ee 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/NomineePrivateMessage.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/Message/NomineePrivateMessage.tsx @@ -9,7 +9,7 @@ import { Tooltip, Typography, } from '@cypherock/cysync-ui'; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { selectLanguage, useAppSelector } from '~/store'; @@ -38,11 +38,14 @@ export const NomineePrivateMessageInput = () => { const [cardLocationError, setCardLocationError] = useState(''); const [personalMessageError, setPersonalMessageError] = useState(''); - const isNextDisabled = - !personalMessage.trim() || - !cardLocation.trim() || - !cardLocationError || - !personalMessageError; + const isNextDisabled = useMemo( + () => + !personalMessage.trim() || + !cardLocation.trim() || + !!cardLocationError || + !!personalMessageError, + [personalMessage, cardLocation, cardLocationError, personalMessageError], + ); const validateFields = debounce(() => { const cardLocationValidation = validateInputLanguage(cardLocation, lang); diff --git a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/ExecutorDetails.tsx b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/ExecutorDetails.tsx index 847df396b..ffb697352 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/ExecutorDetails.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/ExecutorDetails.tsx @@ -58,12 +58,14 @@ export const ExecutorDetails = () => { ); }; - const isSameEmail = Boolean(email && email === alternateEmail); - const [hasErrors, setHasErrors] = useState(false); + const isSameEmail = useMemo( + () => Boolean(email && email === alternateEmail), + [email, alternateEmail], + ); const isFormIncomplete = useMemo( () => !name || !email || hasErrors, - [hasErrors], + [hasErrors, name, email], ); return ( diff --git a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/NomineeDetails.tsx b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/NomineeDetails.tsx index 70874881a..904cc708e 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/NomineeDetails.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/GoldPlanPurchase/Dialogs/NomineeAndExecutor/NomineeDetails.tsx @@ -49,12 +49,14 @@ export const NomineeDetails: React.FC<{ index: number }> = ({ index }) => { onNext(); }; - const isSameEmail = Boolean(email && email === alternateEmail); - const [hasErrors, setHasErrors] = useState(false); + const isSameEmail = useMemo( + () => Boolean(email && email === alternateEmail), + [email, alternateEmail], + ); const isFormIncomplete = useMemo( () => !name || !email || hasErrors, - [hasErrors], + [hasErrors, name, email], ); return ( diff --git a/packages/cysync-core/src/dialogs/Inheritance/SilverPlanPurchase/Dialogs/Email/UserDetails.tsx b/packages/cysync-core/src/dialogs/Inheritance/SilverPlanPurchase/Dialogs/Email/UserDetails.tsx index 285ab65c1..eb822475b 100644 --- a/packages/cysync-core/src/dialogs/Inheritance/SilverPlanPurchase/Dialogs/Email/UserDetails.tsx +++ b/packages/cysync-core/src/dialogs/Inheritance/SilverPlanPurchase/Dialogs/Email/UserDetails.tsx @@ -50,12 +50,14 @@ export const UserDetails = () => { } }, []); - const isSameEmail = Boolean(email && email === alternateEmail); - const [hasErrors, setHasErrors] = useState(false); + const isSameEmail = useMemo( + () => Boolean(email && email === alternateEmail), + [email, alternateEmail], + ); const isFormIncomplete = useMemo( () => !name || !email || !alternateEmail || hasErrors, - [hasErrors], + [hasErrors, name, email, alternateEmail], ); return (