All files / src/hooks useSelectConnector.ts

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

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 49 50 51 52 53 54 55 56 57 58 59                                                                                                                     
import { useEffect, useState } from 'react';
import { AllSelectConnectorResponse, AllConnectorsResponse } from '../models/allConnectorsResponse';
import { ErrorResponse } from '../models/errorResponse';
import { Pending } from '../models/pending';
import { captureException } from '@sentry/react';
 
export const useSelectConnector = (): ErrorResponse | Pending | AllSelectConnectorResponse => {
  const [result, setResult] = useState<AllSelectConnectorResponse | ErrorResponse | Pending>('pending');
  useEffect(() => {
    const fetchData = async (): Promise<void> => {
      // send
      const data: AllConnectorsResponse | ErrorResponse = await fetch(
        `${import.meta.env.VITE_DASHI_SERVER_ENDPOINT}/api/connector`,
        {
          method: 'GET',
        }
      )
        .then((res) => {
          if (res.status === 200) {
            // 200 OK
            return res.json();
          } else {
            try {
              return res.json();
            } catch (error) {
              captureException(error);
              return {
                code: 'all-connectors/unknown-error',
                message: 'UnknownError: Something went wrong.',
              };
            }
          }
        })
        .catch((error) => {
          captureException(error);
          return {
            code: 'all-connectorsm/unknown-error',
            message: 'UnknownError: Something went wrong.',
          };
        });
      if ('all_connectors' in data) {
        const convertedData: AllSelectConnectorResponse = {
          all_connectors: data.all_connectors.map((connector) => ({
            id: connector.id,
            label: connector.name,
            value: connector.name,
            status: connector.status,
          })),
        };
        setResult(convertedData);
      } else {
        setResult(data);
      }
    };
    fetchData();
  }, []);
  return result;
};