From 632bab40f397be2eb44ade29c6d46a9c3385cf6d Mon Sep 17 00:00:00 2001 From: ShubhamPalriwala Date: Fri, 1 Sep 2023 12:52:03 +0530 Subject: [PATCH] fix: user cannot select a skipped logic for a required question --- .../surveys/[surveyId]/edit/LogicEditor.tsx | 21 ++++++++----------- .../surveys/[surveyId]/edit/SurveyMenuBar.tsx | 7 ++++++- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx index 1004cd8230..d1f394701e 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx @@ -239,18 +239,15 @@ export default function LogicEditor({ - {conditions[question.type].map( - (condition) => - !(question.required && condition === "skipped") && ( - - {logicConditions[condition].label} - - ) - )} + {conditions[question.type].map((condition) => ( + + {logicConditions[condition].label} + + ))} diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx index 4a2186755f..e0095e6633 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx @@ -46,7 +46,7 @@ export default function SurveyMenuBar({ let faultyQuestions: String[] = []; const existingLogicConditions = new Set(); - + useEffect(() => { if (audiencePrompt && activeId === "settings") { setAudiencePrompt(false); @@ -119,6 +119,11 @@ export default function SurveyMenuBar({ for (const question of survey.questions) { for (const logic of question.logic || []) { + if (question.required && logic.condition === "skipped") { + toast.error("User cannot skip a required question, please change the logic jump!"); + return false; + } + const validFields = ["condition", "destination", "value"].filter( (field) => logic[field] !== undefined ).length;