Skip to content
Snippets Groups Projects
Commit da5424c7 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

after overlay is edited refresh the list

parent 0bc66992
No related branches found
No related tags found
1 merge request!380Resolve "[MIN-194] Display user grouped overlays"
...@@ -7,8 +7,9 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector'; ...@@ -7,8 +7,9 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector';
import { authenticatedUserSelector, loadingUserSelector } from '@/redux/user/user.selectors'; import { authenticatedUserSelector, loadingUserSelector } from '@/redux/user/user.selectors';
import { Button } from '@/shared/Button'; import { Button } from '@/shared/Button';
import { userOverlaysDataSelector } from '@/redux/overlays/overlays.selectors'; import { userOverlaysDataSelector } from '@/redux/overlays/overlays.selectors';
import { overlayGroupsSelector } from '@/redux/overlayGroup/overlayGroup.selectors';
import React from 'react'; import React from 'react';
import { overlayGroupsSelector } from '@/redux/overlayGroup/overlayGroup.selectors';
import { OverlayGroup } from '@/types/models';
import { UserOverlaysGroup } from './UserOverlaysGroup'; import { UserOverlaysGroup } from './UserOverlaysGroup';
export const UserOverlays = (): JSX.Element => { export const UserOverlays = (): JSX.Element => {
...@@ -51,12 +52,12 @@ export const UserOverlays = (): JSX.Element => { ...@@ -51,12 +52,12 @@ export const UserOverlays = (): JSX.Element => {
Add overlay Add overlay
</Button> </Button>
</div> </div>
{overlayGroups.map(group => ( {overlayGroups.map((group: OverlayGroup) => (
<UserOverlaysGroup <UserOverlaysGroup
key={group.id} key={group.id}
groupName={group.name} groupName={group.name}
groupId={group.id} groupId={group.id}
overlays={(userOverlays || []).filter(overlay => overlay.group === group.id)} overlays={userOverlays.filter(overlay => overlay.group === group.id)}
/> />
))} ))}
</> </>
......
...@@ -86,9 +86,12 @@ describe('useUserOverlays', () => { ...@@ -86,9 +86,12 @@ describe('useUserOverlays', () => {
const FIRST_USER_OVERLAY = overlayFixture; const FIRST_USER_OVERLAY = overlayFixture;
const SECOND_USER_OVERLAY = overlayFixture; const SECOND_USER_OVERLAY = overlayFixture;
const overlays = [FIRST_USER_OVERLAY, SECOND_USER_OVERLAY];
const reversedOverlays = [SECOND_USER_OVERLAY, FIRST_USER_OVERLAY];
const page = { const page = {
...overlaysPageFixture, ...overlaysPageFixture,
data: [FIRST_USER_OVERLAY, SECOND_USER_OVERLAY], data: overlays,
}; };
mockedAxiosNewClient mockedAxiosNewClient
.onGet( .onGet(
...@@ -111,7 +114,7 @@ describe('useUserOverlays', () => { ...@@ -111,7 +114,7 @@ describe('useUserOverlays', () => {
overlays: { overlays: {
...OVERLAYS_INITIAL_STATE_MOCK, ...OVERLAYS_INITIAL_STATE_MOCK,
userOverlays: { userOverlays: {
data: [FIRST_USER_OVERLAY, SECOND_USER_OVERLAY], data: overlays,
loading: 'idle', loading: 'idle',
error: DEFAULT_ERROR, error: DEFAULT_ERROR,
}, },
...@@ -122,7 +125,7 @@ describe('useUserOverlays', () => { ...@@ -122,7 +125,7 @@ describe('useUserOverlays', () => {
result: { result: {
current: { moveUserOverlayListItem, userOverlaysList }, current: { moveUserOverlayListItem, userOverlaysList },
}, },
} = renderHook(() => useUserOverlays([FIRST_USER_OVERLAY, SECOND_USER_OVERLAY], null), { } = renderHook(() => useUserOverlays(overlays, null), {
wrapper: Wrapper, wrapper: Wrapper,
}); });
...@@ -130,7 +133,7 @@ describe('useUserOverlays', () => { ...@@ -130,7 +133,7 @@ describe('useUserOverlays', () => {
moveUserOverlayListItem(0, 1); moveUserOverlayListItem(0, 1);
}); });
expect(userOverlaysList).toEqual([SECOND_USER_OVERLAY, FIRST_USER_OVERLAY]); expect(userOverlaysList).toEqual(reversedOverlays);
}); });
it('calls updateOverlays on calling updateUserOverlaysOrder', async () => { it('calls updateOverlays on calling updateUserOverlaysOrder', async () => {
const FIRST_USER_OVERLAY = { ...overlayFixture, order: 1, id: 12 }; const FIRST_USER_OVERLAY = { ...overlayFixture, order: 1, id: 12 };
...@@ -169,11 +172,13 @@ describe('useUserOverlays', () => { ...@@ -169,11 +172,13 @@ describe('useUserOverlays', () => {
}, },
}); });
const originalOverlays = [FIRST_USER_OVERLAY, SECOND_USER_OVERLAY];
const { const {
result: { result: {
current: { moveUserOverlayListItem, updateUserOverlaysOrder }, current: { moveUserOverlayListItem, updateUserOverlaysOrder },
}, },
} = renderHook(() => useUserOverlays([FIRST_USER_OVERLAY, SECOND_USER_OVERLAY], null), { } = renderHook(() => useUserOverlays(originalOverlays, null), {
wrapper: Wrapper, wrapper: Wrapper,
}); });
......
...@@ -4,7 +4,7 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector'; ...@@ -4,7 +4,7 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector';
import { loadingUserOverlaysSelector } from '@/redux/overlays/overlays.selectors'; import { loadingUserOverlaysSelector } from '@/redux/overlays/overlays.selectors';
import { updateOverlays } from '@/redux/overlays/overlays.thunks'; import { updateOverlays } from '@/redux/overlays/overlays.thunks';
import { MapOverlay } from '@/types/models'; import { MapOverlay } from '@/types/models';
import { useState } from 'react'; import { useEffect, useState } from 'react';
import { moveArrayElement } from '../UserOverlaysGroup.utils'; import { moveArrayElement } from '../UserOverlaysGroup.utils';
type UseUserOverlaysReturn = { type UseUserOverlaysReturn = {
...@@ -19,10 +19,16 @@ export const useUserOverlays = ( ...@@ -19,10 +19,16 @@ export const useUserOverlays = (
groupId: number | null, groupId: number | null,
): UseUserOverlaysReturn => { ): UseUserOverlaysReturn => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const [userOverlaysList, setUserOverlaysList] = useState<MapOverlay[]>(userOverlays); const [userOverlaysList, setUserOverlaysList] = useState<MapOverlay[]>([]);
const loadingUserOverlays = useAppSelector(loadingUserOverlaysSelector); const loadingUserOverlays = useAppSelector(loadingUserOverlaysSelector);
const isPending = loadingUserOverlays === 'pending'; const isPending = loadingUserOverlays === 'pending';
useEffect(() => {
if (userOverlays) {
setUserOverlaysList(userOverlays);
}
}, [userOverlays]);
const moveUserOverlayListItem = (dragIndex: number, hoverIndex: number): void => { const moveUserOverlayListItem = (dragIndex: number, hoverIndex: number): void => {
const updatedUserOverlays = moveArrayElement(userOverlaysList, dragIndex, hoverIndex); const updatedUserOverlays = moveArrayElement(userOverlaysList, dragIndex, hoverIndex);
setUserOverlaysList(updatedUserOverlays); setUserOverlaysList(updatedUserOverlays);
......
...@@ -31,7 +31,7 @@ export const loadingUserOverlaysSelector = createSelector( ...@@ -31,7 +31,7 @@ export const loadingUserOverlaysSelector = createSelector(
export const userOverlaysDataSelector = createSelector( export const userOverlaysDataSelector = createSelector(
userOverlaysSelector, userOverlaysSelector,
overlays => overlays.data, overlays => overlays.data || [],
); );
export const userOverlaysIdsAndOrderSelector = createSelector( export const userOverlaysIdsAndOrderSelector = createSelector(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment