export default function ButtonControlPanel()

in aws-core-ui/src/App/Components/ButtonControlPanel.tsx [40:90]


export default function ButtonControlPanel({
  onClose,
  genericErrorHandler,
  mode,
}: {
  onClose: () => void;
  genericErrorHandler: (error: unknown) => void;
  mode: Mode;
}) {
  const [testDialogActive, setTestDialogActive] = React.useState(false);
  const [testingConnection, setTestingConnection] = React.useState(false);
  const [connectionSuccessful, setConnectionSuccessful] = React.useState(false);
  const [testResultMessage, setTestResultMessage] = React.useState('');
  const ctx = useApplicationContext();
  const { clearAlerts } = useErrorService();

  const { getValues } = useFormContext<FormFields>();
  const isReadOnly = useReadOnlyContext();

  const testConnection = React.useCallback(async () => {
    const formData = getValues();
    clearAlerts();
    setConnectionSuccessful(false);
    setTestDialogActive(false);
    setTestingConnection(true);
    try {
      const result = await testAwsConnection(
        toRequestData(ctx.config, formData)
      );

      setConnectionSuccessful(result.success);
      setTestResultMessage(result.message);
      setTestDialogActive(true);
    } catch (e) {
      genericErrorHandler(e);
    } finally {
      setTestingConnection(false);
    }
  }, [clearAlerts, ctx.config, genericErrorHandler, getValues]);

  return (
    <Panel className={styles.awsConnectionButtonPanel}>
      <ButtonSet>
        <Button disabled={isReadOnly} primary type="submit">
          {mode === Mode.CONVERT
            ? 'Convert'
            : ctx.isEditMode
            ? 'Save'
            : 'Create'}
        </Button>
        <Button onClick={() => onClose()}>{'Cancel'}</Button>