export default function Distribution()

in s3-artifact-storage-ui/src/App/S3/TransferSpeedUp/components/Distribution.tsx [26:76]


export default function Distribution({ label, fieldName, onChange }: OwnProps) {
  const { control, getValues, setError, clearErrors } = useFormContext();
  const { showErrorsOnForm } = useErrorService({
    setError,
    errorKeyToFieldNameConvertor: errorIdToFieldName,
  });
  const { isLoading, errors, reloadDistributions, cfDistributions } =
    useCfDistributions();
  const { isMagicHappening, disabled, setCfDistributions } =
    useCloudFrontDistributionsContext();

  const reloadCloudDistributions = useCallback(async () => {
    clearErrors(fieldName);
    const result = await reloadDistributions(getValues());
    result && setCfDistributions(result);
  }, [
    clearErrors,
    fieldName,
    reloadDistributions,
    getValues,
    setCfDistributions,
  ]);

  if (errors) {
    showErrorsOnForm(errors);
  }

  return (
    <FormRow label={label} labelFor={fieldName}>
      <FieldRow>
        <FieldColumn>
          <FormSelect
            name={fieldName}
            control={control}
            // selected={uploadDistributionData[0]}
            rules={{ required: 'Distribution is mandatory' }}
            data={cfDistributions}
            onChange={onChange}
            onBeforeOpen={reloadCloudDistributions}
            loading={isLoading}
            label="-- Select distribution --"
            disabled={isMagicHappening || disabled}
          />
        </FieldColumn>
        <FieldColumn>
          <MagicDistributionsButton />
        </FieldColumn>
      </FieldRow>
    </FormRow>
  );
}