Skip to content

Commit 9a4e517

Browse files
committed
front: fix infra lock status
1 parent 43ed182 commit 9a4e517

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

front/src/applications/editor/Editor.tsx

+17-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import { useSwitchTypes } from 'applications/editor/tools/switchEdition/types';
1919
import type { switchProps } from 'applications/editor/tools/switchProps';
2020
import type { CommonToolState } from 'applications/editor/tools/types';
2121
import { centerMapOnObject, selectEntities } from 'applications/editor/tools/utils';
22-
import type { ObjectType } from 'common/api/osrdEditoastApi';
22+
import { osrdEditoastApi, type ObjectType } from 'common/api/osrdEditoastApi';
2323
import { useModal } from 'common/BootstrapSNCF/ModalSNCF';
2424
import { LoaderState } from 'common/Loaders';
2525
import MapButtons from 'common/Map/Buttons/MapButtons';
2626
import MapSearch from 'common/Map/Search/MapSearch';
27-
import { useInfraID, useOsrdActions } from 'common/osrdContext';
27+
import { useInfraActions, useInfraID, useOsrdActions } from 'common/osrdContext';
2828
import Tipped from 'common/Tipped';
2929
import type { EditorSliceActions } from 'reducers/editor';
3030
import { getEditorState, getInfraLockStatus } from 'reducers/editor/selectors';
@@ -49,8 +49,8 @@ const Editor = () => {
4949
const { urlInfra } = useParams();
5050
const infraID = useInfraID();
5151
const [searchParams, setSearchParams] = useSearchParams();
52-
const isLocked = useSelector(getInfraLockStatus);
5352
const isLoading = useSelector(getIsLoading);
53+
const isLocked = useSelector(getInfraLockStatus);
5454
const editorState = useSelector(getEditorState);
5555
const switchTypes = useSwitchTypes(infraID);
5656
/* eslint-disable @typescript-eslint/no-explicit-any */
@@ -65,6 +65,8 @@ const Editor = () => {
6565
}, [setRenderingFingerprint]);
6666

6767
const [isFormSubmited, setIsFormSubmited] = useState(false);
68+
const [getInfraById, { data: infra }] = osrdEditoastApi.endpoints.getInfraById.useLazyQuery({});
69+
const { updateInfra } = useInfraActions();
6870

6971
const switchTool = useCallback(
7072
({ toolType, toolState }: switchProps) => {
@@ -312,6 +314,18 @@ const Editor = () => {
312314
}
313315
}, [toolAndState.state.entity?.properties.id]);
314316

317+
useEffect(() => {
318+
if (infraID) {
319+
getInfraById({ id: infraID });
320+
}
321+
}, [infraID, getInfraById]);
322+
323+
useEffect(() => {
324+
if (infra) {
325+
dispatch(updateInfra(infra));
326+
}
327+
}, [infra]);
328+
315329
return (
316330
<EditorContext.Provider value={extendedContext as EditorContextType<unknown>}>
317331
<main

front/src/applications/editor/tools/rangeEdition/tool-factory.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ function getRangeEditionTool<T extends EditorRange>({
9797
id: `save-${objectTypeAction}`,
9898
icon: AiFillSave,
9999
labelTranslationKey: `Editor.tools.${objectTypeEdition}-edition.actions.save-${objectTypeAction}`,
100-
isDisabled({ isLoading, state }) {
100+
isDisabled({ isLoading, isInfraLocked, state }) {
101101
if (isLoading) return true;
102102
if (canSave) return !canSave(state);
103-
return false;
103+
return isInfraLocked || false;
104104
},
105105
async onClick({ state, setState, dispatch, infraID }) {
106106
const { initialEntity, entity } = state;

front/src/applications/editor/tools/switchEdition/tool.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const SwitchEditionTool: Tool<SwitchEditionState> = {
4949
id: 'save-switch',
5050
icon: AiFillSave,
5151
labelTranslationKey: 'Editor.tools.switch-edition.actions.save-switch',
52-
isDisabled({ isLoading, state }) {
52+
isDisabled({ isLoading, isInfraLocked, state }) {
5353
const portWithTracks = filter(state.entity?.properties?.ports ?? {}, (p) => !!p?.track);
5454
const portsKeys = Object.keys(state.entity?.properties?.ports ?? {});
5555
const detectedDuplicates = filter(
@@ -61,6 +61,7 @@ const SwitchEditionTool: Tool<SwitchEditionState> = {
6161
portWithTracks.length !== portsKeys.length ||
6262
!!detectedDuplicates.length ||
6363
isLoading ||
64+
isInfraLocked ||
6465
false
6566
);
6667
},

0 commit comments

Comments
 (0)