import { useCallback } from 'react';

import useSWR from 'swr';

import { apiGetNodeRelated } from '~/api/node';
import { API } from '~/constants/api';
import { INode } from '~/types';
import { ApiGetNodeRelatedResult } from '~/types/node';

export const useGetNodeRelated = (id?: INode['id']) => {
  const { data, isValidating, mutate } = useSWR<ApiGetNodeRelatedResult>(
    API.NODES.RELATED(id),
    () => apiGetNodeRelated({ id }),
  );

  const refresh = useCallback(() => mutate(data, true), [data, mutate]);

  return { related: data?.related, isLoading: isValidating && !data, refresh };
};