import { FC, useState } from 'react'; import { ValidateFieldsError } from 'async-validator'; import { Button, Checkbox, MenuItem, Grid, Typography } from '@mui/material'; import SaveIcon from '@mui/icons-material/Save'; import { MQTT_SETTINGS_VALIDATOR, validate } from '../../validators'; import { BlockFormControlLabel, ButtonRow, FormLoader, SectionContent, ValidatedPasswordField, ValidatedTextField } from '../../components'; import { MqttSettings } from '../../types'; import { numberValue, updateValue, useRest } from '../../utils'; import * as MqttApi from '../../api/mqtt'; const MqttSettingsForm: FC = () => { const { loadData, saving, data, setData, saveData, errorMessage } = useRest({ read: MqttApi.readMqttSettings, update: MqttApi.updateMqttSettings }); const [fieldErrors, setFieldErrors] = useState(); const updateFormValue = updateValue(setData); const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(MQTT_SETTINGS_VALIDATOR, data); saveData(); } catch (errors: any) { setFieldErrors(errors); } }; return ( <> } label="Enable MQTT" /> 0 (default) 1 2 } label="Set Clean Session" /> } label="Always use Retain Flag" /> Formatting Nested in a single topic As individual topics } label="Publish command output to a 'response' topic" /> {!data.ha_enabled && ( } label="Publish single value topics on change" /> {data.publish_single && ( } label="Publish to command topics (ioBroker)" /> )} )} {!data.publish_single && ( } label="Enable MQTT Discovery (Home Assistant, Domoticz)" /> {data.ha_enabled && ( )} )} Publish Intervals (in seconds, 0=automatic) ); }; return ( {content()} ); }; export default MqttSettingsForm;