Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 540x 540x 18x 18x 83x 83x 3x 2x 540x 540x 6104x | import { RootState } from "@redux/types/store";
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import {
defaultVals,
DynamicFilterState,
SetFilterByKeyPayload,
} from "./types";
const initialState: DynamicFilterState = {
filters: {},
};
const dynamicFilterSlice = createSlice({
name: "filter",
initialState,
reducers: {
setFilterByKey: (
state: DynamicFilterState,
action: PayloadAction<SetFilterByKeyPayload>,
) => {
const { filterKey, params } = action.payload;
state.filters[filterKey] = params;
},
resetFilterByKey: (
state: DynamicFilterState,
action: PayloadAction<{ filterKey: string }>,
) => {
const { filterKey } = action.payload;
if (state.filters[filterKey]) {
state.filters[filterKey] = {} as defaultVals;
}
},
resetAllFilters: (state) => {
state.filters = {};
},
},
});
export const { setFilterByKey, resetFilterByKey, resetAllFilters } =
dynamicFilterSlice.actions;
export const selectFiltersObject = (state: RootState, filterKey: string) =>
state.filter.filters?.[filterKey] || initialState?.filters || {};
export default dynamicFilterSlice.reducer;
|