import React from 'react'; import axios from '../utility/axios'; import ModalBase from './ModalBase'; import { FormButtonRow, FormButton, FormTextField, FormSelectField, FormSubmit } from '../utility/forms'; import { TextField } from '../utility/inputs'; import { Formik, Form } from 'formik'; import ModalHeader from './ModalHeader'; import ModalFooter from './ModalFooter'; import ModalContent from './ModalContent'; import useExtensions from '../utility/useExtensions'; import LoadingInfo from '../widgets/LoadingInfo'; import { FontIcon } from '../icons'; // import FormikForm from '../utility/FormikForm'; export default function ConnectionModal({ modalState, connection = undefined }) { const [sqlConnectResult, setSqlConnectResult] = React.useState(null); const extensions = useExtensions(); const [isTesting, setIsTesting] = React.useState(false); const testIdRef = React.useRef(0); const handleTest = async (values) => { setIsTesting(true); testIdRef.current += 1; const testid = testIdRef.current; const resp = await axios.post('connections/test', values); if (testIdRef.current != testid) return; setIsTesting(false); setSqlConnectResult(resp.data); }; const handleCancel = async () => { testIdRef.current += 1; // invalidate current test setIsTesting(false); }; const handleSubmit = async (values) => { axios.post('connections/save', values); modalState.close(); }; return ( {connection ? 'Edit connection' : 'Add connection'}
{extensions.drivers.map((driver) => ( ))} {/* */} {!isTesting && sqlConnectResult && sqlConnectResult.msgtype == 'connected' && (
Connected: {sqlConnectResult.version}
)} {!isTesting && sqlConnectResult && sqlConnectResult.msgtype == 'error' && (
Connect failed: {sqlConnectResult.error}
)} {isTesting && }
{isTesting ? ( ) : ( )}
); }