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 AirDCPPSocket from "../../services/DcppSearchService"; import { isUndefined, isEmpty, isNil } from "lodash"; export const AirDCPPSettingsForm = (airDCPPClientSettings): ReactElement => { const { settings } = airDCPPClientSettings; const dispatch = useDispatch(); const { setADCPPSocket } = useContext(AirDCPPSocketContext); const onSubmit = async (values) => { try { const socket = new AirDCPPSocket({ hostname: `${values.hostname}`, protocol: `${values.protocol}`, }); const socketConnectionResponse = await socket.connect( values.username, values.password, true, ); if (!isNil(socketConnectionResponse.session_id)) { dispatch( saveSettings({ host: values, airDCPPUserSettings: socketConnectionResponse, }), ); setADCPPSocket( new AirDCPPSocket({ hostname: `${values.hostname}`, protocol: `${values.protocol}`, }), ); } } catch (error) { console.log(error); } }; const removeSettings = useCallback(async () => { dispatch(deleteSettings()); setADCPPSocket({}); }, []); const validate = async () => {}; const initFormData = !isEmpty(settings.directConnect) || !isUndefined(settings.directConnect) ? settings.directConnect.client.host : {}; return ( <>
(

AirDC++ Connection Information

)} /> {!isEmpty(settings) ? ( ) : null} {!isEmpty(settings) ? (

) : null} ); }; export default AirDCPPSettingsForm;