diff --git a/src/pages/activity/activity-or-route-planner/activity/main-activity/MainActivity.tsx b/src/pages/activity/activity-or-route-planner/activity/main-activity/MainActivity.tsx index e02711b2..21380350 100644 --- a/src/pages/activity/activity-or-route-planner/activity/main-activity/MainActivity.tsx +++ b/src/pages/activity/activity-or-route-planner/activity/main-activity/MainActivity.tsx @@ -139,16 +139,13 @@ const MainActivityPage = () => { ); }, nextClickCallback: (routeToGoal: boolean) => { - const codeActivity = getValueOfActivity(callbackHolder.getData(), currentIteration) ?? ""; - const skip = filtrePage(EdtRoutesNameEnum.MAIN_ACTIVITY_GOAL, codeActivity); - // TODO: regarder comment update des données du callbackHolder directement à la sélection de l'activité - - // Check if the user has selected an existing activity or created a new one - // If the user has selected an existing activity, the data is saved as intended during a lunatic loop - // If not, the save process is delayed to the next page (to go back into a lunatic loop) + const initialCodeActivity = getValueOfActivity(callbackHolder.getData(), currentIteration) ?? ""; const customActivityLabel = localStorage.getItem("selectionValue - label"); - const loopNavigateFunction = - customActivityLabel !== null ? loopNavigate : saveAndLoopNavigate; + + const codeActivity = + customActivityLabel !== null && customActivityLabel !== "" + ? localStorage.getItem("selectedSuggesterIdNewActivity") ?? "" + : initialCodeActivity; if (customActivityLabel !== null && customActivityLabel !== "") { setValue( @@ -177,11 +174,18 @@ const MainActivityPage = () => { ); saveData(idSurvey, data, true, true).then(() => { - //Clean history to avoid data overflow + // Clean history to avoid data overflow localStorage.removeItem("historyInputSuggester"); }); } - if (routeToGoal && !skip) { + + const loopNavigateFunction = + customActivityLabel !== null && customActivityLabel !== "" + ? loopNavigate + : saveAndLoopNavigate; + + const skipToGoal = filtrePage(EdtRoutesNameEnum.MAIN_ACTIVITY_GOAL, codeActivity); + if (routeToGoal && !skipToGoal) { loopNavigateFunction( idSurvey, context.source, @@ -190,11 +194,13 @@ const MainActivityPage = () => { currentIteration, ); } else { - const skip = filtrePage(EdtRoutesNameEnum.SECONDARY_ACTIVITY, codeActivity); + const skipToSecondary = filtrePage(EdtRoutesNameEnum.SECONDARY_ACTIVITY, codeActivity); loopNavigateFunction( idSurvey, context.source, - skip ? EdtRoutesNameEnum.ACTIVITY_LOCATION : getNextLoopPage(currentPage), + skipToSecondary + ? EdtRoutesNameEnum.ACTIVITY_LOCATION + : getNextLoopPage(currentPage), LoopEnum.ACTIVITY_OR_ROUTE, currentIteration, ); diff --git a/src/service/loop-service.ts b/src/service/loop-service.ts index 8a0d07c6..f40c6e81 100644 --- a/src/service/loop-service.ts +++ b/src/service/loop-service.ts @@ -278,13 +278,13 @@ const ignoreDepsOfCheckboxGroup = ( }; const filtrePage = (page: EdtRoutesNameEnum, activityCode: string) => { - let codesToIgnore; + let listToIgnore: string[] = []; const activityCodeOrSuggesterCode = activityCode.split("-").length > 1 ? activityCode.split("-")[0] : activityCode; - switch (page) { + case EdtRoutesNameEnum.MAIN_ACTIVITY_GOAL: listToIgnore = CODES_ACTIVITY_IGNORE_GOAL; break; @@ -305,7 +305,7 @@ const filtrePage = (page: EdtRoutesNameEnum, activityCode: string) => { break; } - codesToIgnore = getAllCodesFromActivitiesCodes(listToIgnore); + const codesToIgnore = getAllCodesFromActivitiesCodes(listToIgnore); const exist = codesToIgnore.indexOf(activityCodeOrSuggesterCode) >= 0; return exist; }; @@ -499,10 +499,10 @@ const findItemInCategoriesNomenclature = ( parent?: NomenclatureActivityOption, ): | { - item: NomenclatureActivityOption; - parent: NomenclatureActivityOption | undefined; - index?: number; - } + item: NomenclatureActivityOption; + parent: NomenclatureActivityOption | undefined; + index?: number; + } | undefined => { let res = referentiel.find(a => a.id === id); if (res) {