All files / src/hooks/enterprise-api/merchants/underwriting useListUnderwritingDocuments.tsx

75% Statements 15/20
53.84% Branches 7/13
80% Functions 4/5
73.68% Lines 14/19

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 60 61 62 63 64 65 66 67 68 69                          1x             8x 3x   3x     3x     3x     3x   3x   3x           8x   8x     3x   3x                                 8x    
import { TMerchantDocument } from "@components/Merchants/MerchantPreview/data.types";
import { useAppDispatch } from "@redux/hooks";
import { updatePermissions } from "@redux/slices/app";
import { customInstance } from "@services/api";
import { QueryKey, useQuery } from "react-query";
 
type ArgProps = {
  id: number;
  filter: string;
  showConversationFiles?: boolean;
  isMerchantPortal?: boolean;
};
 
export const useListBusinessDetailsDocuments = ({
  id,
  filter,
  queryKey,
  isMerchantPortal,
  showConversationFiles = true,
}: ArgProps & { queryKey: QueryKey }) => {
  const getMerchantDocuments = ({ filter, id }: ArgProps) => {
    const filters: string[] = [];
 
    Iif (filter) {
      filters.push(`attTypeName:"${filter}"`);
    }
    Iif (isMerchantPortal) {
      filters.push(`attTypeName:!"dispute_evidence"`);
    }
    Iif (!showConversationFiles)
      filters.push(`attTypeName:!"conversation_message"`);
 
    filters.push(`isUploaded:true`);
 
    const filterString = filters.map((f) => `${f}`).join("%3B");
 
    return customInstance({
      url: `/accounts/${id}/files?filter=${filterString}&sort=-id`,
      method: "GET",
    });
  };
 
  const dispatch = useAppDispatch();
 
  const { data, error, isLoading } = useQuery<TMerchantDocument[]>(
    [queryKey, id, filter],
    async () => {
      const documents = await getMerchantDocuments({ id, filter });
 
      return documents?.data || [];
    },
    {
      refetchOnWindowFocus: false,
      retry: 1,
      onError(err: any) {
        if (err.not_authorized) {
          dispatch(
            updatePermissions({
              "list-business-details-documents": true,
            }),
          );
        }
      },
    },
  );
 
  return { error, isLoading, data: data || [] };
};