export default function useAwsConnections()

in aws-core-ui/src/Hooks/useAwsConnections.tsx [10:56]


export default function useAwsConnections(data: AvailableConnectionsData) {
  const [error, setError] = React.useState<string | undefined>();
  const [connectionOptions, setConnectionOptions] = React.useState<
    Option[] | undefined
  >();
  const [isLoading, setIsLoading] = React.useState(true);

  const fetchAwsConnections = React.useCallback(async () => {
    const availableAwsConns = data.availableConnectionsControllerUrl;
    const parameters = {
      projectId: data.projectId,
      resource: data.availableConnectionsResource,
    };
    const queryComponents = new URLSearchParams(parameters).toString();
    const response = await post(`${availableAwsConns}?${queryComponents}`);

    const responseData: Array<string[]> = JSON.parse(response);

    return responseData
      .filter(
        (val) =>
          !data.awsConnectionTypesFilter ||
          data.awsConnectionTypesFilter(val[3])
      )
      .map((val) => ({ key: val[0], label: val[1] } as Option));
  }, [data]);

  const reloadConnectionOptions = React.useCallback(() => {
    fetchAwsConnections()
      .then((awsConnections) => setConnectionOptions(awsConnections))
      .catch((err: unknown) => setError(errorMessage(err)))
      .finally(() => setIsLoading(false));
  }, [fetchAwsConnections]);

  React.useEffect(() => {
    setIsLoading(true);
    reloadConnectionOptions();
  }, [reloadConnectionOptions]);

  return {
    connectionOptions,
    error,
    isLoading,
    reloadConnectionOptions,
    fetchAwsConnections,
  };
}