export default function useSupportedProviders()

in aws-core-ui/src/Hooks/useSupportedProviders.tsx [10:44]


export default function useSupportedProviders({ config }: { config: Config }) {
  const [loading, setLoading] = React.useState<boolean>(false);
  const [error, setError] = React.useState<string | undefined>(undefined);
  const [data, setData] = React.useState<Option[]>([]);

  const loadProviders = React.useCallback(async () => {
    setLoading(true);
    setError(undefined);
    try {
      const params = new URLSearchParams();
      params.append('projectId', config.projectId);
      const response = await get(
        `${config.supportedProvidersUrl}?${params.toString()}`
      );
      const parsedResponse = JSON.parse(response);
      return Object.keys(parsedResponse).map((key) => ({
        key,
        label: parsedResponse[key],
      }));
    } catch (e) {
      setError(errorMessage(e));
    } finally {
      setLoading(false);
    }

    // return previous value if error occurred
    return [];
  }, [config.projectId, config.supportedProvidersUrl]);

  React.useEffect(() => {
    loadProviders().then((response) => setData(response));
  }, [loadProviders]);

  return { loading, error, data };
}