export default function useExternalIds()

in aws-core-ui/src/Hooks/useExternalIds.tsx [24:59]


export default function useExternalIds(config: Config) {
  const [error, setError] = React.useState<string | undefined>();
  const [externalId, setExternalId] = React.useState<string | undefined>();

  const [isLoading, setIsLoading] = React.useState(true);
  const fetchExternalId = React.useCallback(async () => {
    const postUrl = config.externalIdsControllerUrl;
    const parameters = {
      projectId: config.projectId,
      [config.externalIdsConnectionParam]: config.connectionId,
    };
    const queryComponents = new URLSearchParams(parameters).toString();
    const response = await post(`${postUrl}?${queryComponents}`);

    return JSON.parse(response);
  }, [
    config.externalIdsControllerUrl,
    config.projectId,
    config.externalIdsConnectionParam,
    config.connectionId,
  ]);

  React.useEffect(() => {
    setIsLoading(true);
    fetchExternalId()
      .then((newId) => setExternalId(newId))
      .catch((err: unknown) => setError(errorMessage(err)))
      .finally(() => setIsLoading(false));
  }, [fetchExternalId]);

  return {
    externalId,
    error,
    isLoading,
  };
}