import { isNotNil } from 'ramda'; import { useFetchQuery } from '../../..'; import type { GetItem } from '../models'; interface UseGetItem { initialValues?: TItemForm; isLoading: boolean; } export const useGetItem = < TItem extends { id: number; name: string }, TItemForm >({ id, decoder, baseEndpoint, itemQueryKey, adapter }: GetItem & { id: number | 'add' | null; }): UseGetItem => { const { data, isLoading } = useFetchQuery({ decoder, getEndpoint: () => baseEndpoint(id as number), getQueryKey: () => [itemQueryKey, id], queryOptions: { enabled: isNotNil(id) && id !== 'add', suspense: false } }); return { initialValues: data ? adapter(data) : undefined, isLoading }; };