import React, { ReactElement, useCallback, useContext } from "react"; import { Form, Field } from "react-final-form"; import { useDispatch } from "react-redux"; import { saveSettings, deleteSettings } from "../../actions/settings.actions"; import { AirDCPPSettingsConfirmation } from "./AirDCPPSettingsConfirmation"; import { AirDCPPSocketContext } from "../../context/AirDCPPSocket"; import { isUndefined, isEmpty, isNil } from "lodash"; export const AirDCPPSettingsForm = (): ReactElement => { const dispatch = useDispatch(); const airDCPPSettings = useContext(AirDCPPSocketContext); const hostValidator = (hostname: string): string | null => { const hostnameRegex = /[\W]+/gm; try { if (!isUndefined(hostname)) { const matches = hostname.match(hostnameRegex); return (isNil(matches) && matches.length !== 0) ? hostname : "Invalid hostname; it should not contain special characters"; } } catch { return null; } } const onSubmit = useCallback(async (values) => { try { airDCPPSettings.setSettings(values); dispatch( saveSettings({ host: values, }), ); } catch (error) { console.log(error); } }, []); const removeSettings = useCallback(async () => { airDCPPSettings.setSettings({}); dispatch(deleteSettings()); }, []); const validate = async () => { }; const initFormData = !isUndefined( airDCPPSettings.airDCPPState.settings.directConnect, ) ? airDCPPSettings.airDCPPState.settings.directConnect.client.host : {}; return ( <>
)} /> {!isEmpty(airDCPPSettings.airDCPPState.socketConnectionInformation) ? () : null} > ); }; export default AirDCPPSettingsForm;