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 (