diff --git a/src/components/FunctionalArea/MapNavigation/MapNavigation.component.test.tsx b/src/components/FunctionalArea/MapNavigation/MapNavigation.component.test.tsx index cf1aa42facf833f95b5a7ef32899036716847ba4..4fae37530de53dd219cd0d5118bbe12aded2d3ae 100644 --- a/src/components/FunctionalArea/MapNavigation/MapNavigation.component.test.tsx +++ b/src/components/FunctionalArea/MapNavigation/MapNavigation.component.test.tsx @@ -170,7 +170,7 @@ describe('MapNavigation - component', () => { histamineMapCloseButton.click(); }); - expect(dispatchEventMock).toHaveBeenCalledTimes(3); + expect(dispatchEventMock).toHaveBeenCalledTimes(2); expect(dispatchEventMock).toHaveBeenCalledWith('onSubmapClose', 5052); expect(dispatchEventMock).toHaveBeenCalledWith('onSubmapOpen', 52); }); diff --git a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.test.ts b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.test.ts index 55c6230d3e238a7a7595957d217c1025aafaaa65..609cc0f5ceaf38a4ee64f1433e553e11ea9bf7ce 100644 --- a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.test.ts +++ b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.test.ts @@ -12,11 +12,11 @@ import { } from '@/redux/map/map.fixtures'; import { MODAL_INITIAL_STATE_MOCK } from '@/redux/modal/modal.mock'; import { PROJECT_OVERVIEW_IMAGE_MOCK } from '@/redux/project/project.mock'; +import { PluginsEventBus } from '@/services/pluginsManager/pluginsEventBus'; import { OverviewImageLink } from '@/types/models'; import { getReduxStoreWithActionsListener } from '@/utils/testing/getReduxStoreActionsListener'; import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore'; import { renderHook } from '@testing-library/react'; -import { PluginsEventBus } from '@/services/pluginsManager/pluginsEventBus'; import { FIRST_ARRAY_ELEMENT, NOOP, @@ -313,7 +313,6 @@ describe('useOverviewImageLinkActions - hook', () => { jest.clearAllMocks(); }); it('should dispatch event if coordinates changed', () => { - const dispatchEventMock = jest.spyOn(PluginsEventBus, 'dispatchEvent'); const { Wrapper } = getReduxStoreWithActionsListener({ project: { data: { @@ -361,14 +360,6 @@ describe('useOverviewImageLinkActions - hook', () => { }); handleLinkClick(OVERVIEW_LINK_MODEL_MOCK); - - expect(dispatchEventMock).toHaveBeenCalledTimes(2); - expect(dispatchEventMock).toHaveBeenCalledWith('onZoomChanged', { modelId: 5053, zoom: 7 }); - expect(dispatchEventMock).toHaveBeenCalledWith('onCenterChanged', { - modelId: 5053, - x: 15570, - y: 3016, - }); }); it('should not dispatch event if coordinates do not changed', () => { const dispatchEventMock = jest.spyOn(PluginsEventBus, 'dispatchEvent'); diff --git a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts index 8a8689aa8029ca6877508bd0c00bea85cc350571..5059ea594c02245a181a02f3e0fe8e00407c82db 100644 --- a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts +++ b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts @@ -1,13 +1,13 @@ import { NOOP } from '@/constants/common'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { mapDataLastPositionSelector, mapOpenedMapsSelector } from '@/redux/map/map.selectors'; +import { mapOpenedMapsSelector } from '@/redux/map/map.selectors'; import { openMapAndSetActive, setActiveMap, setMapPosition } from '@/redux/map/map.slice'; import { closeModal, setOverviewImageId } from '@/redux/modal/modal.slice'; import { currentModelIdSelector, modelsDataSelector } from '@/redux/models/models.selectors'; import { projectOverviewImagesSelector } from '@/redux/project/project.selectors'; -import { MapModel, OverviewImageLink, OverviewImageLinkModel } from '@/types/models'; import { PluginsEventBus } from '@/services/pluginsManager/pluginsEventBus'; +import { MapModel, OverviewImageLink, OverviewImageLinkModel } from '@/types/models'; import { OverviewImageLinkImageHandler, OverviewImageLinkModelHandler, @@ -23,7 +23,6 @@ export const useOverviewImageLinkActions = (): UseOverviewImageLinkActionsResult const models = useAppSelector(modelsDataSelector); const overviewImages = useAppSelector(projectOverviewImagesSelector); const currentMapModelId = useAppSelector(currentModelIdSelector); - const mapLastPosition = useAppSelector(mapDataLastPositionSelector); const checkIfImageIsAvailable = (imageId: number): boolean => overviewImages.some(image => image.idObject === imageId); @@ -55,21 +54,6 @@ export const useOverviewImageLinkActions = (): UseOverviewImageLinkActionsResult const { x } = link.modelPoint; const { y } = link.modelPoint; - if (mapLastPosition.z !== zoom) { - PluginsEventBus.dispatchEvent('onZoomChanged', { - modelId: currentMapModelId, - zoom, - }); - } - - if (mapLastPosition.x !== x || mapLastPosition.y !== y) { - PluginsEventBus.dispatchEvent('onCenterChanged', { - modelId: currentMapModelId, - x, - y, - }); - } - dispatch( setMapPosition({ x, diff --git a/src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts b/src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts index 209499399e2e28b88e311ca935895b0a1304e076..e80346b5d069b42e41ffaa1d690248fa91ad6497 100644 --- a/src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts +++ b/src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts @@ -1,14 +1,12 @@ +import { DEFAULT_ZOOM } from '@/constants/map'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { setMapPosition, varyPositionZoom } from '@/redux/map/map.slice'; +import { currentModelIdSelector, modelByIdSelector } from '@/redux/models/models.selectors'; import { SetBoundsResult, useSetBounds } from '@/utils/map/useSetBounds'; import { useCallback } from 'react'; import { useDispatch } from 'react-redux'; -import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { currentModelIdSelector, modelByIdSelector } from '@/redux/models/models.selectors'; -import { DEFAULT_ZOOM } from '@/constants/map'; -import { PluginsEventBus } from '@/services/pluginsManager/pluginsEventBus'; -import { mapDataLastPositionSelector } from '@/redux/map/map.selectors'; -import { useVisibleBioEntitiesPolygonCoordinates } from './useVisibleBioEntitiesPolygonCoordinates'; import { MAP_ZOOM_IN_DELTA, MAP_ZOOM_OUT_DELTA } from '../MappAdditionalActions.constants'; +import { useVisibleBioEntitiesPolygonCoordinates } from './useVisibleBioEntitiesPolygonCoordinates'; interface UseAddtionalActionsResult { zoomIn(): void; @@ -22,7 +20,6 @@ export const useAddtionalActions = (): UseAddtionalActionsResult => { const polygonCoordinates = useVisibleBioEntitiesPolygonCoordinates(); const currentMapModelId = useAppSelector(currentModelIdSelector); const currentModel = useAppSelector(state => modelByIdSelector(state, currentMapModelId)); - const currentModelLastPostiion = useAppSelector(mapDataLastPositionSelector); const zoomInToBioEntities = (): SetBoundsResult | undefined => { if (polygonCoordinates) { @@ -38,24 +35,6 @@ export const useAddtionalActions = (): UseAddtionalActionsResult => { }; dispatch(setMapPosition(defaultPosition)); - - if (currentModelLastPostiion.z !== defaultPosition.z) { - PluginsEventBus.dispatchEvent('onZoomChanged', { - modelId: currentMapModelId, - zoom: defaultPosition.z, - }); - } - - if ( - currentModelLastPostiion.x !== defaultPosition.x || - currentModelLastPostiion.y !== defaultPosition.y - ) { - PluginsEventBus.dispatchEvent('onCenterChanged', { - modelId: currentMapModelId, - x: defaultPosition.x, - y: defaultPosition.y, - }); - } } return undefined; diff --git a/src/redux/map/map.reducers.ts b/src/redux/map/map.reducers.ts index 6ef980497d6f6f97f70b9c65f6a416cbb3f7e650..b2fbff2d89f78e038e0f995d85b1641031d1907d 100644 --- a/src/redux/map/map.reducers.ts +++ b/src/redux/map/map.reducers.ts @@ -33,15 +33,18 @@ export const setMapDataReducer = (state: MapState, action: SetMapDataAction): vo export const setMapPositionReducer = (state: MapState, action: SetMapPositionDataAction): void => { const position = action.payload || {}; const statePosition = state.data.position; - const lastZoom = statePosition.last.z; - const finalPosition = getPointMerged(position || {}, statePosition.last); + const lastPosition = statePosition.last; + const lastZoom = lastPosition.z; + const finalPosition = getPointMerged(position || {}, lastPosition); const { modelId } = state.data; - PluginsEventBus.dispatchEvent('onCenterChanged', { - modelId, - x: finalPosition.x, - y: finalPosition.y, - }); + if (lastPosition?.x !== finalPosition.x || lastPosition?.y !== finalPosition.y) { + PluginsEventBus.dispatchEvent('onCenterChanged', { + modelId, + x: finalPosition.x, + y: finalPosition.y, + }); + } if (position?.z && lastZoom && lastZoom !== position?.z) { PluginsEventBus.dispatchEvent('onZoomChanged', {