diff --git a/apps/web/app/s/[surveyId]/components/LinkSurvey.tsx b/apps/web/app/s/[surveyId]/components/LinkSurvey.tsx
index 5e248ff18f..06738a2447 100644
--- a/apps/web/app/s/[surveyId]/components/LinkSurvey.tsx
+++ b/apps/web/app/s/[surveyId]/components/LinkSurvey.tsx
@@ -76,7 +76,10 @@ export default function LinkSurvey({
}, [survey, startAt]);
// pass in the responseId if the survey is a single use survey, ensures survey state is updated with the responseId
- const [surveyState, setSurveyState] = useState(new SurveyState(survey.id, singleUseId, responseId, userId));
+ let surveyState = useMemo(() => {
+ return new SurveyState(survey.id, singleUseId, responseId, userId);
+ }, [survey.id, singleUseId, responseId, userId]);
+
const prefillResponseData: TResponseData | undefined = prefillAnswer
? getPrefillResponseData(survey.questions[0], survey, prefillAnswer, languageCode)
: undefined;
@@ -95,7 +98,6 @@ export default function LinkSurvey({
// when response of current question is processed successfully
setIsResponseSendingFinished(true);
},
- setSurveyState: setSurveyState,
},
surveyState
),
@@ -149,6 +151,7 @@ export default function LinkSurvey({
if (!surveyState.isResponseFinished() && hasFinishedSingleUseResponse) {
return ;
}
+
if (survey.verifyEmail && emailVerificationStatus !== "verified") {
if (emailVerificationStatus === "fishy") {
return ;
@@ -224,9 +227,8 @@ export default function LinkSurvey({
}
const { id } = res.data;
- const newSurveyState = surveyState.copy();
- newSurveyState.updateDisplayId(id);
- setSurveyState(newSurveyState);
+ surveyState.updateDisplayId(id);
+ responseQueue.updateSurveyState(surveyState);
}
}}
onResponse={(responseUpdate: TResponseUpdate) => {