import useSWR from 'swr'; import { type FetchGithubRepoMetaInput, fetchGithubRepoMeta, } from '../../../services/github'; import type { GithubRepositoryMeta, Maybe } from '../../../types'; export type UseGithubRepoMetaReturn> = { isError: boolean; isLoading: boolean; isValidating: boolean; meta: T extends undefined ? Maybe : GithubRepositoryMeta; }; export const useGithubRepoMeta = >( input: FetchGithubRepoMetaInput, fallback?: T ) => { const { data, error, isLoading, isValidating } = useSWR( input, fetchGithubRepoMeta, { fallbackData: fallback, } ); if (error) console.error(error); return { isError: !!error, isLoading, isValidating, meta: data, } as UseGithubRepoMetaReturn; };