All files / src/redux/slices/dynamicFilterSlice index.ts

100% Statements 11/11
80% Branches 4/5
100% Functions 4/4
100% Lines 11/11

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;