Skip to content

Commit

Permalink
[Mission] Résolution du souci de cache en cas de détachement d'un sig…
Browse files Browse the repository at this point in the history
…nalement depuis une mission (#1008)

- Resolve #827
  • Loading branch information
claire2212 authored Nov 27, 2023
2 parents 3762d4e + fc93b37 commit 34404cc
Show file tree
Hide file tree
Showing 14 changed files with 19 additions and 39 deletions.
5 changes: 3 additions & 2 deletions frontend/src/api/missionsAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,12 @@ export const missionsAPI = monitorenvPrivateApi.injectEndpoints({
.join('&')
}),
updateMission: builder.mutation<Mission, MissionForApi>({
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 },
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/domain/entities/missions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ export type Mission<EnvAction = EnvActionControl | EnvActionSurveillance | EnvAc
attachedReportings: ReportingDetailed[]
closedBy: string
controlUnits: LegacyControlUnit[]
detachedReportingIds?: number[]
detachedReportingIds: number[]
detachedReportings?: []
endDateTimeUtc?: string
envActions: EnvAction[]
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/domain/use_cases/missions/saveMission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const saveMission =
reporting: { reportings },
sideWindow: { currentPath }
} = getState()
const valuesToSave = omit(values, ['attachedReportings', 'detachedReportings', 'detachedReportingIds'])
const valuesToSave = omit(values, ['attachedReportings', 'detachedReportings'])
const routeParams = getMissionPageRoute(currentPath)
const missionIsNewMission = isNewMission(routeParams?.params?.id)

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/domain/use_cases/reporting/attachMission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const attachMission = (id: number) => 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 => {
Expand Down
6 changes: 1 addition & 5 deletions frontend/src/domain/use_cases/reporting/closeReporting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
3 changes: 0 additions & 3 deletions frontend/src/domain/use_cases/reporting/duplicateReporting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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
})
)
}
5 changes: 0 additions & 5 deletions frontend/src/domain/use_cases/reporting/switchReporting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@ export const switchReporting =
hasAttachedMission ? nextReporting.reporting.attachedMission : undefined
)
)
await dispatch(
attachMissionToReportingSliceActions.setMissionId(
hasAttachedMission ? nextReporting.reporting.missionId : undefined
)
)

await dispatch(
setReportingFormVisibility({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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')
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = () => {
Expand Down
11 changes: 4 additions & 7 deletions frontend/src/features/Reportings/ReportingForm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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])
Expand All @@ -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({
Expand Down
4 changes: 1 addition & 3 deletions frontend/src/features/Reportings/slice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,14 @@ const attachMissionToReportingSlice = createSlice({
},
setAttachedMission(state, action) {
state.attachedMission = action.payload
state.missionId = action.payload?.id
},
setInitialAttachedMission(state, action: PayloadAction<Mission | undefined>) {
state.initialMissionId = action.payload?.id
state.initialAttachedMission = action.payload
},
setIsMissionAttachmentInProgress(state, action) {
state.isMissionAttachmentInProgress = action.payload
},
setMissionId(state, action) {
state.missionId = action.payload
}
}
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export function ReportingForm({
return action
})
setFieldValue('envActions', envActionsToUpdate)
setFieldValue('detachedReportingIds', [...(values.detachedReportingIds || []), reporting.id])

setCurrentActionIndex(undefined)
}
Expand Down
1 change: 1 addition & 0 deletions frontend/src/features/missions/Missions.helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export const missionFactory = (
attachedReportings: attachedReporting ? [attachedReporting] : [],
closedBy: '',
controlUnits: [controlUnitFactory()],
detachedReportingIds: [],
endDateTimeUtc: '',
envActions: [],
isClosed: false,
Expand Down

0 comments on commit 34404cc

Please sign in to comment.