in s3-artifact-storage-ui/src/hooks/useTransferAccelerationAvailable.tsx [13:67]
export default function useTransferAccelerationAvailable() {
const config = useAppContext();
const { getValues } = useFormContext();
const canLoadBucketInfo = useCanLoadBucketInfoData();
const isDisabled = !canLoadBucketInfo;
const [responseErrors, setResponseErrors] = React.useState<
ResponseErrors | string | undefined
>();
const [isLoading, setIsLoading] = React.useState(false);
const [isAvailable, setIsAvailable] = React.useState<boolean>(false);
const [isTriggered, setIsTriggered] = React.useState<boolean>(false);
const validateS3TransferAccelerationAvailability =
React.useCallback(async () => {
if (isLoading) {
return;
}
if (!isTriggered) {
setIsTriggered(true);
}
setResponseErrors(undefined);
setIsAvailable(false);
if (isDisabled) {
return;
}
setIsLoading(true);
try {
const data = getValues();
const { isAvailable: result, errors } =
await fetchS3TransferAccelerationAvailability(config, data);
if (errors) {
data[FormFields.CONNECTION_TRANSFER_ACCELERATION_TOGGLE] = false;
setResponseErrors(errors);
} else {
setIsAvailable(result ?? false);
if (!result) {
data[FormFields.CONNECTION_TRANSFER_ACCELERATION_TOGGLE] = false;
}
}
} catch (e) {
setResponseErrors(errorMessage(e));
} finally {
setIsLoading(false);
}
}, [config, getValues, isDisabled, isLoading, isTriggered]);
return {
available: isAvailable,
isLoading,
triggered: isTriggered,
errors: responseErrors,
reload: validateS3TransferAccelerationAvailability,
};
}