import React, { useState } from 'react';
import useFieldApi from '@data-driven-forms/react-form-renderer/use-field-api';
import useFormApi from '@data-driven-forms/react-form-renderer/use-form-api';
import { Alert } from '@patternfly/react-core';
import {
FormGroup,
Select,
SelectOption,
SelectVariant,
Spinner,
} from '@patternfly/react-core';
import PropTypes from 'prop-types';
import { useGetAWSSourcesQuery } from '../../../store/apiSlice';
export const AWSSourcesSelect = ({
label,
isRequired,
className,
...props
}) => {
const { change, getState } = useFormApi();
const { input } = useFieldApi(props);
const [isOpen, setIsOpen] = useState(false);
const [selectedSourceId, setSelectedSourceId] = useState(
getState()?.values?.['aws-sources-select']
);
const {
data: sources,
isFetching,
isSuccess,
isError,
refetch,
} = useGetAWSSourcesQuery();
const handleSelect = (_, sourceName) => {
const sourceId = sources.find((source) => source.name === sourceName).id;
setSelectedSourceId(sourceId);
setIsOpen(false);
change(input.name, sourceId);
};
const handleClear = () => {
setSelectedSourceId();
change(input.name, undefined);
};
const handleToggle = () => {
// Refetch upon opening (but not upon closing)
if (!isOpen) {
refetch();
}
setIsOpen(!isOpen);
};
return (
<>
<>
{isError && (
Sources cannot be reached, try again later or enter an AWS account
ID manually.
)}
>
>
);
};
AWSSourcesSelect.propTypes = {
className: PropTypes.string,
label: PropTypes.node,
isRequired: PropTypes.bool,
};