import useSWR from 'swr'; import { convertWPTopicToTopic, fetchTopic } from '../../../services/graphql'; import type { Maybe, Topic, WPTopic } from '../../../types'; export type UseTopicReturn> = { isError: boolean; isLoading: boolean; isValidating: boolean; topic: T extends undefined ? Maybe : Topic; }; export const useTopic = >( slug: string, fallback?: T ): UseTopicReturn => { const { data, error, isLoading, isValidating } = useSWR(slug, fetchTopic, { fallbackData: fallback, }); if (error) console.error(error); return { isError: !!error, isLoading, isValidating, topic: data ? convertWPTopicToTopic(data) : undefined, } as UseTopicReturn; };