import { useEffect } from 'react';
import { fetchAvailableServices } from '../../model/common';
import { useAsyncFn } from '../useAsyncFn';
import { useMemoizedFn } from '../useMemoizedFn';

/**
 * 用于监测服务是否可用的hooks
 */
export function useAvailableServices() {
  const [{ loading, value: availableServices }, fetch] = useAsyncFn(() =>
    fetchAvailableServices()
  );

  useEffect(() => {
    fetch();
  }, []);

  const refetch = useMemoizedFn(async () => {
    fetchAvailableServices.clearCache();
    fetch();
  });

  return { loading, availableServices, refetch };
}