in s3-artifact-storage-ui/src/App/Storage/components/StorageType.tsx [24:62]
export default function StorageType({ onChange: callback }: StorageTypeConfig) {
const storageOptions = useStorageOptions();
const s3StorageTypes = useMemo(() => [AWS_S3, S3_COMPATIBLE], []);
const { control, setValue, clearErrors } = useFormContext<IFormInput>();
const innerOnChange = useCallback(
(option: SelectItem<Option> | null) => {
if (option && s3StorageTypes.includes(option.key)) {
clearErrors();
setValue(FormFields.STORAGE_TYPE, option, {
shouldTouch: true,
shouldDirty: true,
});
if (option.key === S3_COMPATIBLE) {
setValue(FormFields.AWS_ENVIRONMENT_TYPE, AWS_ENV_TYPE_ARRAY[1]);
} else {
setValue(FormFields.AWS_ENVIRONMENT_TYPE, AWS_ENV_TYPE_ARRAY[0]);
}
} else if (callback) {
callback(option);
}
},
[callback, clearErrors, s3StorageTypes, setValue]
);
return (
<FormRow label="Type" labelFor={`${FormFields.STORAGE_TYPE}_key`}>
<FormSelect
id={`${FormFields.STORAGE_TYPE}_key`}
name={FormFields.STORAGE_TYPE}
control={control}
data={storageOptions}
onChange={innerOnChange}
/>
</FormRow>
);
}