-
Tadeusz Miesiąc authoredTadeusz Miesiąc authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
drawer.selectors.ts 1.57 KiB
import { rootSelector } from '@/redux/root/root.selectors';
import { assertNever } from '@/utils/assertNever';
import { createSelector } from '@reduxjs/toolkit';
export const drawerSelector = createSelector(rootSelector, state => state.drawer);
export const isDrawerOpenSelector = createSelector(drawerSelector, state => state.isOpen);
export const searchDrawerStateSelector = createSelector(
drawerSelector,
state => state.searchDrawerState,
);
export const currentStepDrawerStateSelector = createSelector(
searchDrawerStateSelector,
state => state.currentStep,
);
export const selectedValueDrawerSelector = createSelector(
searchDrawerStateSelector,
state => state.selectedValue,
);
export const stepTypeDrawerSelector = createSelector(
searchDrawerStateSelector,
state => state.stepType,
);
export const resultListSelector = createSelector(rootSelector, state => {
const selectedType = state.drawer.searchDrawerState.stepType;
switch (selectedType) {
case 'drugs':
return (state.drugs.data || []).map(drug => ({
id: drug.id,
name: drug.name,
data: drug,
}));
case 'chemicals':
return (state.chemicals.data || []).map(chemical => ({
id: chemical.id.id,
name: chemical.name,
data: chemical,
}));
case 'bioEntity':
return undefined;
case 'mirna':
return (state.mirnas.data || []).map(mirna => ({
id: mirna.id,
name: mirna.name,
data: mirna,
}));
case 'none':
return undefined;
default:
return assertNever(selectedType);
}
});