diff --git a/src/redux/drawer/drawer.reducers.test.ts b/src/redux/drawer/drawer.reducers.test.ts index 7701a180c2bc0c148b050e96c0ffc2bc523f1bcd..c9aa33dbd506bcedb60cb6ab56180057ac44c92e 100644 --- a/src/redux/drawer/drawer.reducers.test.ts +++ b/src/redux/drawer/drawer.reducers.test.ts @@ -5,7 +5,7 @@ import drawerReducer, { openDrawer, closeDrawer } from './drawer.slice'; import type { DrawerState } from './drawer.types'; const INITIAL_STATE: DrawerState = { - open: false, + isOpen: false, drawerName: 'none', }; @@ -38,19 +38,19 @@ describe('drawer reducer', () => { it('should update the store when you click a project info button on the nav bar', async () => { const { type } = await store.dispatch(openDrawer('project-info')); - const { open, drawerName } = store.getState().drawer; + const { isOpen, drawerName } = store.getState().drawer; expect(type).toBe('drawer/openDrawer'); - expect(open).toBe(true); + expect(isOpen).toBe(true); expect(drawerName).toEqual('project-info'); }); it('should update the store when you click the close button on the drawer', async () => { const { type } = await store.dispatch(closeDrawer()); - const { open, drawerName } = store.getState().drawer; + const { isOpen, drawerName } = store.getState().drawer; expect(type).toBe('drawer/closeDrawer'); - expect(open).toBe(false); + expect(isOpen).toBe(false); expect(drawerName).toEqual('none'); }); diff --git a/src/redux/drawer/drawer.reducers.ts b/src/redux/drawer/drawer.reducers.ts index 47b8ef6dd7ff78df197ba96bd753bb80d99b186b..ade3a5c12c7508f42f126f0e9d604031b6487d61 100644 --- a/src/redux/drawer/drawer.reducers.ts +++ b/src/redux/drawer/drawer.reducers.ts @@ -3,10 +3,10 @@ import { DrawerState } from '@/redux/drawer/drawer.types'; import { PathName } from '@/types/pathName'; export const openDrawerReducer = (state: DrawerState, action: PayloadAction<PathName>): void => { - state.open = true; + state.isOpen = true; state.drawerName = action.payload; }; export const closeDrawerReducer = (state: DrawerState): void => { - state.open = false; + state.isOpen = false; }; diff --git a/src/redux/drawer/drawer.selectors.ts b/src/redux/drawer/drawer.selectors.ts index a49b98fffb4585ab3afef535d62b364377f20a6b..0ae254bd997a14d0d3f09301f7eae2cffaff7ecc 100644 --- a/src/redux/drawer/drawer.selectors.ts +++ b/src/redux/drawer/drawer.selectors.ts @@ -1,4 +1,5 @@ import { createSelector } from '@reduxjs/toolkit'; import { rootSelector } from '@/redux/root/root.selectors'; -export const drawerDataSelector = createSelector(rootSelector, state => state.drawer); +export const drawerSelector = createSelector(rootSelector, state => state.drawer); +export const isDrawerOpenSelector = createSelector(drawerSelector, state => state.isOpen); diff --git a/src/redux/drawer/drawer.slice.ts b/src/redux/drawer/drawer.slice.ts index 4c71fda1792e323ce63c52292f06bf13cb1f044f..aa1f2e55a4265c92337f33f449e2a10be9b7df69 100644 --- a/src/redux/drawer/drawer.slice.ts +++ b/src/redux/drawer/drawer.slice.ts @@ -3,7 +3,7 @@ import { DrawerState } from '@/redux/drawer/drawer.types'; import { openDrawerReducer, closeDrawerReducer } from './drawer.reducers'; const initialState: DrawerState = { - open: false, + isOpen: false, drawerName: 'none', }; diff --git a/src/redux/drawer/drawer.types.ts b/src/redux/drawer/drawer.types.ts index a0ad70b8b7e1cf4f7555eaf15ffc265dd9b19206..8b4bf47a33fd92a276a2fc45e96863db6c33cdf8 100644 --- a/src/redux/drawer/drawer.types.ts +++ b/src/redux/drawer/drawer.types.ts @@ -1,4 +1,4 @@ export type DrawerState = { - open: boolean; + isOpen: boolean; drawerName: 'none' | 'search' | 'project-info' | 'plugins' | 'export' | 'legend'; }; diff --git a/src/redux/drugs/drugs.selectors.ts b/src/redux/drugs/drugs.selectors.ts index b67a8cb086dfed2ffdebe53f6d446865358ee459..cca30ff272f61d3ae75d24ed4a21786ffe37e28b 100644 --- a/src/redux/drugs/drugs.selectors.ts +++ b/src/redux/drugs/drugs.selectors.ts @@ -1,6 +1,11 @@ import { rootSelector } from '@/redux/root/root.selectors'; import { createSelector } from '@reduxjs/toolkit'; +const SIZE_OF_EMPTY_ARRAY = 0; + export const drugsSelector = createSelector(rootSelector, state => state.drugs); export const loadingDrugsStatusSelector = createSelector(drugsSelector, state => state.loading); +export const numberOfDrugsSelector = createSelector(drugsSelector, state => + state.data ? state.data.length : SIZE_OF_EMPTY_ARRAY, +); diff --git a/src/redux/search/search.slice.ts b/src/redux/search/search.slice.ts index 73930e3374bc72c333bc89ec8be066d1e961c241..360bfa689ed19e83f6474176a4d02fe7c4512384 100644 --- a/src/redux/search/search.slice.ts +++ b/src/redux/search/search.slice.ts @@ -4,10 +4,6 @@ import { createSlice } from '@reduxjs/toolkit'; const initialState: SearchState = { searchValue: '', - searchResult: { - content: '', - drugs: '', - }, loading: 'idle', }; diff --git a/src/redux/search/search.types.ts b/src/redux/search/search.types.ts index 1faf1b72e2f18b7a340e425c0af6a611712e95d8..45380f011abc19d556077abbbc62021f6c1fa016 100644 --- a/src/redux/search/search.types.ts +++ b/src/redux/search/search.types.ts @@ -1,12 +1,6 @@ import { Loading } from '@/types/loadingState'; -export interface SearchResult { - content: string; - drugs: string; -} - export interface SearchState { searchValue: string; - searchResult: SearchResult; loading: Loading; } diff --git a/src/redux/store.ts b/src/redux/store.ts index a095912bdda990fb9677b2b8814e0cd848014d6a..e981a8a051d1c334cc673565edfe19db05ac3e27 100644 --- a/src/redux/store.ts +++ b/src/redux/store.ts @@ -20,6 +20,7 @@ export const store = configureStore({ devTools: true, }); +export type StoreType = typeof store; // Infer the `RootState` and `AppDispatch` types from the store itself export type RootState = ReturnType<typeof store.getState>; // Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}