From d3d273d5d6500756579dcc456d9507cba97f9491 Mon Sep 17 00:00:00 2001 From: Akshata Katwal Date: Wed, 29 Jan 2025 16:13:45 +0530 Subject: [PATCH] Issue #0000 feat: Avoid multiple calls for suggestionAPI --- src/components/AddLeanerModal.tsx | 2 +- src/components/DynamicForm.tsx | 36 +++++++++++++++++-------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/components/AddLeanerModal.tsx b/src/components/AddLeanerModal.tsx index eacce1d5..2f485bf7 100644 --- a/src/components/AddLeanerModal.tsx +++ b/src/components/AddLeanerModal.tsx @@ -271,7 +271,7 @@ const AddLearnerModal: React.FC = ({ sendEmail( creatorName, apiBody['username'], - password, + apiBody['username'], userEmail, apiBody['firstName'] ); diff --git a/src/components/DynamicForm.tsx b/src/components/DynamicForm.tsx index 806052fe..e81e6517 100644 --- a/src/components/DynamicForm.tsx +++ b/src/components/DynamicForm.tsx @@ -64,6 +64,8 @@ const DynamicForm: React.FC = ({ }; const { t } = useTranslation(); const [suggestions, setSuggestions] = useState([]); + const [isGetUserName, setIsGetUserName] = useState(false); + const submittedButtonStatus = useSubmittedButtonStore( (state: any) => state.submittedButtonStatus @@ -273,34 +275,35 @@ const DynamicForm: React.FC = ({ return error; }); } - const validateUsername = async (userData: { firstName: string; lastName: string; username: string }) => { + const validateUsername = async (userData: { + firstName: string; + lastName: string; + username: string; + }) => { try { - const response = await userNameExist(userData); - setSuggestions([response?.suggestedUsername]); + console.log('suggestions.length', suggestions.length); + if (suggestions.length === 0) { + const response = await userNameExist(userData); + setSuggestions([response?.suggestedUsername]); + setIsGetUserName(false); + } } catch (error) { setSuggestions([]); + setIsGetUserName(true); console.error('Error validating username:', error); } }; const handleChange= async(event: any)=> { const sanitizedData = sanitizeFormData(event.formData); - if(formData?.username && formData?.firstName && formData?.lastName && formData?.username!== event.formData?.username) - { - const userData = { - firstName: formData?.firstName, - lastName: formData?.lastName, - username: event.formData?.username, - } - // const response = await userNameExist(userData); - // setSuggestions([response?.suggestedUsername]); - await validateUsername(userData); - + if (event.formData?.username !== formData?.username && formData?.username) { + setIsGetUserName(false); + setSuggestions([]); } onChange({ ...event, formData: sanitizedData }); } const handleUsernameBlur = async (username: string) => { - if (username && formData?.firstName && formData?.lastName) { + if (username && formData?.firstName && formData?.lastName && !isGetUserName ) { const userData = { firstName: formData?.firstName, lastName: formData?.lastName, @@ -310,7 +313,7 @@ const DynamicForm: React.FC = ({ } }; const handleFirstLastNameBlur = async (lastName: string) => { - if (lastName && !isEdit) { + if (lastName && !isEdit && !isGetUserName) { try { console.log('Username onblur called' ,formData); if(formData?.firstName && formData?.lastName){ @@ -342,6 +345,7 @@ const DynamicForm: React.FC = ({ ...prev, username: selectedUsername, })); + setIsGetUserName(true) setSuggestions([]); };