All files / src/store/features/search/api searchOptionsApi.ts

0% Statements 0/15
0% Branches 0/4
0% Functions 0/6
0% Lines 0/14

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                                                                             
import { SEARCH_OPTIONS } from "../../../../constants/index.ts";
import handleOptions from "../../../../utils/search/handleOptions.ts";
import { apiSlice } from "../../../app/apiSlice.ts";
import { setOptions } from "../searchSlice.ts";
 
export const searchOptionsApi = apiSlice.injectEndpoints({
  endpoints: (builder) => ({
    searchOptions: builder.query<any, string>({
      query: (context) => ({
        url: SEARCH_OPTIONS,
        method: "POST",
        body: {
          context: context,
        },
      }),
      transformResponse: (response: any) => {
        return (
          response?.column_options?.flatMap(
            (col) =>
              col.options?.flatMap((option) => handleOptions(col, option)) ??
              [],
          ) ?? []
        );
      },
      onQueryStarted: async (_, { dispatch, queryFulfilled }) => {
        try {
          const { data } = await queryFulfilled;
          dispatch(setOptions(data));
        } catch (error) {
          // Handle any errors
          console.log(error);
        }
      },
    }),
  }),
});
 
export const { useSearchOptionsQuery } = searchOptionsApi;