From fc93b371e46d782a5d7f5e904bca9eefd14605da Mon Sep 17 00:00:00 2001 From: Claire Dagan Date: Mon, 27 Nov 2023 15:45:46 +0100 Subject: [PATCH] [Mission] invalidate reporting cache when user detach a reporting to a mission --- frontend/src/api/missionsAPI.ts | 5 +++-- frontend/src/domain/entities/missions.ts | 2 +- .../src/domain/use_cases/missions/saveMission.ts | 2 +- .../src/domain/use_cases/reporting/attachMission.ts | 2 +- .../domain/use_cases/reporting/closeReporting.ts | 6 +----- .../use_cases/reporting/duplicateReporting.ts | 3 --- .../reporting/editReportingInLocalStore.ts | 13 +++++-------- .../domain/use_cases/reporting/switchReporting.ts | 5 ----- .../reporting/unattachMissionFromReporting.ts | 1 - .../AttachMission/AttachMissionToReportingModal.tsx | 2 -- .../src/features/Reportings/ReportingForm/index.tsx | 11 ++++------- frontend/src/features/Reportings/slice.ts | 4 +--- .../MissionForm/ActionForm/ReportingForm/index.tsx | 1 + frontend/src/features/missions/Missions.helpers.ts | 1 + 14 files changed, 19 insertions(+), 39 deletions(-) diff --git a/frontend/src/api/missionsAPI.ts b/frontend/src/api/missionsAPI.ts index aaba1ef0a6..7494230441 100644 --- a/frontend/src/api/missionsAPI.ts +++ b/frontend/src/api/missionsAPI.ts @@ -71,11 +71,12 @@ export const missionsAPI = monitorenvPrivateApi.injectEndpoints({ .join('&') }), updateMission: builder.mutation({ - invalidatesTags: (_, __, { attachedReportingIds = [], id }) => [ + invalidatesTags: (_, __, { attachedReportingIds = [], detachedReportingIds = [], id }) => [ { id, type: 'Missions' }, { id: 'LIST', type: 'Missions' }, { id: 'LIST', type: 'Reportings' }, - ...attachedReportingIds.map(reportingId => ({ id: reportingId, type: 'Reportings' as const })) + ...attachedReportingIds.map(reportingId => ({ id: reportingId, type: 'Reportings' as const })), + ...detachedReportingIds.map(reportingId => ({ id: reportingId, type: 'Reportings' as const })) ], query: ({ id, ...patch }) => ({ body: { id, ...patch }, diff --git a/frontend/src/domain/entities/missions.ts b/frontend/src/domain/entities/missions.ts index 6ee83784b1..4c17123ac2 100644 --- a/frontend/src/domain/entities/missions.ts +++ b/frontend/src/domain/entities/missions.ts @@ -276,7 +276,7 @@ export type Mission async (dispatch, getState) => { throw Error("Erreur à l'ajout du signalement") } await dispatch(attachMissionToReportingSliceActions.setAttachedMission(result.data)) - await dispatch(attachMissionToReportingSliceActions.setMissionId(id)) + response.unsubscribe() }) .catch(error => { diff --git a/frontend/src/domain/use_cases/reporting/closeReporting.ts b/frontend/src/domain/use_cases/reporting/closeReporting.ts index 68f12ea41b..d1bc88515a 100644 --- a/frontend/src/domain/use_cases/reporting/closeReporting.ts +++ b/frontend/src/domain/use_cases/reporting/closeReporting.ts @@ -22,11 +22,7 @@ export const closeReporting = hasAttachedMission ? reportings[reportingIdToClose].reporting.attachedMission : undefined ) ) - await dispatch( - attachMissionToReportingSliceActions.setMissionId( - hasAttachedMission ? reportings[reportingIdToClose].reporting.missionId : undefined - ) - ) + await dispatch(reportingActions.setIsConfirmCancelDialogVisible(true)) await dispatch( setReportingFormVisibility({ diff --git a/frontend/src/domain/use_cases/reporting/duplicateReporting.ts b/frontend/src/domain/use_cases/reporting/duplicateReporting.ts index a2aec2c95d..86818d9e51 100644 --- a/frontend/src/domain/use_cases/reporting/duplicateReporting.ts +++ b/frontend/src/domain/use_cases/reporting/duplicateReporting.ts @@ -29,9 +29,6 @@ export const duplicateReporting = (reportingId: number) => async (dispatch, getS duplicatedReporting.reporting.attachedMission ?? undefined ) ) - await dispatch( - attachMissionToReportingSliceActions.setMissionId(duplicatedReporting.reporting.missionId ?? undefined) - ) await dispatch( setReportingFormVisibility({ diff --git a/frontend/src/domain/use_cases/reporting/editReportingInLocalStore.ts b/frontend/src/domain/use_cases/reporting/editReportingInLocalStore.ts index 48b4f8a322..1b01f65e9b 100644 --- a/frontend/src/domain/use_cases/reporting/editReportingInLocalStore.ts +++ b/frontend/src/domain/use_cases/reporting/editReportingInLocalStore.ts @@ -43,13 +43,6 @@ export const editReportingInLocalStore = } async function setReporting(dispatch, reportingId, reportingContext, newReporting) { - await dispatch( - setReportingFormVisibility({ - context: reportingContext, - visibility: VisibilityState.VISIBLE - }) - ) - await dispatch(reportingActions.setReporting(newReporting)) await dispatch(reportingActions.setActiveReportingId(reportingId)) const hasAttachedMission = @@ -59,7 +52,11 @@ async function setReporting(dispatch, reportingId, reportingContext, newReportin hasAttachedMission ? newReporting.reporting.attachedMission : undefined ) ) + await dispatch( - attachMissionToReportingSliceActions.setMissionId(hasAttachedMission ? newReporting.reporting.missionId : undefined) + setReportingFormVisibility({ + context: reportingContext, + visibility: VisibilityState.VISIBLE + }) ) } diff --git a/frontend/src/domain/use_cases/reporting/switchReporting.ts b/frontend/src/domain/use_cases/reporting/switchReporting.ts index 2435319e0c..0b26daa0ca 100644 --- a/frontend/src/domain/use_cases/reporting/switchReporting.ts +++ b/frontend/src/domain/use_cases/reporting/switchReporting.ts @@ -16,11 +16,6 @@ export const switchReporting = hasAttachedMission ? nextReporting.reporting.attachedMission : undefined ) ) - await dispatch( - attachMissionToReportingSliceActions.setMissionId( - hasAttachedMission ? nextReporting.reporting.missionId : undefined - ) - ) await dispatch( setReportingFormVisibility({ diff --git a/frontend/src/domain/use_cases/reporting/unattachMissionFromReporting.ts b/frontend/src/domain/use_cases/reporting/unattachMissionFromReporting.ts index 62a7aeb8ad..6f12e25d3f 100644 --- a/frontend/src/domain/use_cases/reporting/unattachMissionFromReporting.ts +++ b/frontend/src/domain/use_cases/reporting/unattachMissionFromReporting.ts @@ -24,7 +24,6 @@ export const unattachMissionFromReporting = await dispatch(updateMapInteractionListeners(MapInteractionListenerEnum.NONE)) await dispatch(reportingActions.setReporting(updatedReporting)) await dispatch(attachMissionToReportingSliceActions.setAttachedMission(response.data.attachedMission)) - await dispatch(attachMissionToReportingSliceActions.setMissionId(response.data.missionId)) } else { throw Error('Erreur au détachement de la mission') } diff --git a/frontend/src/features/Reportings/ReportingForm/AttachMission/AttachMissionToReportingModal.tsx b/frontend/src/features/Reportings/ReportingForm/AttachMission/AttachMissionToReportingModal.tsx index 40f2645f0d..12da747e65 100644 --- a/frontend/src/features/Reportings/ReportingForm/AttachMission/AttachMissionToReportingModal.tsx +++ b/frontend/src/features/Reportings/ReportingForm/AttachMission/AttachMissionToReportingModal.tsx @@ -16,11 +16,9 @@ export function AttachMissionToReportingModal() { ) const initialAttachedMission = useAppSelector(state => state.attachMissionToReporting.initialAttachedMission) - const initialMissionId = useAppSelector(state => state.attachMissionToReporting.initialMissionId) const resetMissionToAttach = () => { dispatch(attachMissionToReportingSliceActions.setAttachedMission(initialAttachedMission)) - dispatch(attachMissionToReportingSliceActions.setMissionId(initialMissionId)) } const validateMissionToAttach = () => { diff --git a/frontend/src/features/Reportings/ReportingForm/index.tsx b/frontend/src/features/Reportings/ReportingForm/index.tsx index 152c44896c..7a01bd3758 100644 --- a/frontend/src/features/Reportings/ReportingForm/index.tsx +++ b/frontend/src/features/Reportings/ReportingForm/index.tsx @@ -22,12 +22,15 @@ export function ReportingFormWithContext({ context, totalReportings }: Reporting const dispatch = useAppDispatch() const reportingFormVisibility = useAppSelector(state => state.global.reportingFormVisibility) - const reportings = useAppSelector(state => state.reporting.reportings) const activeReportingId = useAppSelector(state => state.reporting.activeReportingId) const reportingContext = useAppSelector(state => activeReportingId ? state.reporting.reportings[activeReportingId]?.context : undefined ) + const selectedReporting = useAppSelector(state => + activeReportingId ? state.reporting.reportings[activeReportingId]?.reporting : undefined + ) + const [isAttachNewMission, setIsAttachNewMission] = useState(false) const isReportingNew = useMemo(() => isNewReporting(activeReportingId), [activeReportingId]) @@ -48,12 +51,6 @@ export function ReportingFormWithContext({ context, totalReportings }: Reporting dispatch(saveReporting(values, context)) } - const selectedReporting = useMemo( - () => (activeReportingId && reportings ? reportings[activeReportingId]?.reporting : undefined), - // eslint-disable-next-line react-hooks/exhaustive-deps - [activeReportingId, activeReportingId ? reportings[activeReportingId]?.reporting.missionId : undefined] - ) - const reportingInitialValues = useMemo(() => { if (isReportingNew && activeReportingId) { return getReportingInitialValues({ diff --git a/frontend/src/features/Reportings/slice.ts b/frontend/src/features/Reportings/slice.ts index f9f58d4e83..451b2d1e91 100644 --- a/frontend/src/features/Reportings/slice.ts +++ b/frontend/src/features/Reportings/slice.ts @@ -27,6 +27,7 @@ const attachMissionToReportingSlice = createSlice({ }, setAttachedMission(state, action) { state.attachedMission = action.payload + state.missionId = action.payload?.id }, setInitialAttachedMission(state, action: PayloadAction) { state.initialMissionId = action.payload?.id @@ -34,9 +35,6 @@ const attachMissionToReportingSlice = createSlice({ }, setIsMissionAttachmentInProgress(state, action) { state.isMissionAttachmentInProgress = action.payload - }, - setMissionId(state, action) { - state.missionId = action.payload } } }) diff --git a/frontend/src/features/missions/MissionForm/ActionForm/ReportingForm/index.tsx b/frontend/src/features/missions/MissionForm/ActionForm/ReportingForm/index.tsx index 2286fcde43..2426918739 100644 --- a/frontend/src/features/missions/MissionForm/ActionForm/ReportingForm/index.tsx +++ b/frontend/src/features/missions/MissionForm/ActionForm/ReportingForm/index.tsx @@ -74,6 +74,7 @@ export function ReportingForm({ return action }) setFieldValue('envActions', envActionsToUpdate) + setFieldValue('detachedReportingIds', [...(values.detachedReportingIds || []), reporting.id]) setCurrentActionIndex(undefined) } diff --git a/frontend/src/features/missions/Missions.helpers.ts b/frontend/src/features/missions/Missions.helpers.ts index ddd9f56c4a..0c80a91eb6 100644 --- a/frontend/src/features/missions/Missions.helpers.ts +++ b/frontend/src/features/missions/Missions.helpers.ts @@ -98,6 +98,7 @@ export const missionFactory = ( attachedReportings: attachedReporting ? [attachedReporting] : [], closedBy: '', controlUnits: [controlUnitFactory()], + detachedReportingIds: [], endDateTimeUtc: '', envActions: [], isClosed: false,