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

100% Statements 10/10
100% Branches 4/4
100% Functions 3/3
100% Lines 10/10

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        540x       540x               272x 272x           28x 28x 1x             540x   540x 14249x      
import { RootState } from "@redux/types/store";
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { SearchSliceState, SetSearchQueryPayload } from "./types";
 
const initialState: SearchSliceState = {
  queries: {},
};
 
const searchSlice = createSlice({
  name: "search",
  initialState,
  reducers: {
    setSearchQueryByKey: (
      state: SearchSliceState,
      action: PayloadAction<SetSearchQueryPayload>,
    ) => {
      const { queryKey, params } = action.payload;
      state.queries[queryKey] = params;
    },
    resetSearchQueryByKey: (
      state: SearchSliceState,
      action: PayloadAction<string>,
    ) => {
      const queryKey = action.payload;
      if (state.queries[queryKey]) {
        state.queries[queryKey].value = "";
      }
    },
  },
});
 
export const { setSearchQueryByKey, resetSearchQueryByKey } =
  searchSlice.actions;
 
export const selectQueryString = (state: RootState, queryKey: string) =>
  state.search.queries[queryKey]?.value || "";
 
export default searchSlice.reducer;