All files / src/hooks useFetchSearchItemWithoutUseEffect.ts

0% Statements 0/36
0% Branches 0/1
0% Functions 0/1
0% Lines 0/36

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                                                                                       
import { captureException } from '@sentry/react';
import { ErrorResponse } from '../models/errorResponse';
import { Pending } from '../models/pending';
import { SearchItemsResponse } from '../models/searchItemResponse';
 
export const useFetchSearchItemWithoutUseEffect = async (
  keywords: string
): Promise<SearchItemsResponse | ErrorResponse | Pending> => {
  let result: SearchItemsResponse | ErrorResponse | Pending = 'pending';
 
  if (keywords !== undefined && keywords !== '') {
    // send
    result = await fetch(`${import.meta.env.VITE_DASHI_SERVER_ENDPOINT}/api/item/search?keywords=${keywords}`, {
      method: 'GET',
    })
      .then((res) => {
        if (res.status === 200) {
          // 200 OK
          return res.json();
        } else {
          // error
          try {
            return res.json();
          } catch (error) {
            captureException(error);
            return {
              code: 'search-item/unknown-error',
              message: 'UnknownError: Something went wrong.',
            };
          }
        }
      })
      .catch((error) => {
        captureException(error);
        return {
          code: 'search-item/unknown-error',
          message: 'UnknownError: Something went wrong.',
        };
      });
  }
 
  return result;
};