import { FC, useState } from 'react'; import { ValidateFieldsError } from 'async-validator'; import { Button, Checkbox, MenuItem, Grid, Typography, InputAdornment } 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'; import { useI18nContext } from '../../i18n/i18n-react'; const MqttSettingsForm: FC = () => { const { loadData, saving, data, setData, saveData, errorMessage } = useRest({ read: MqttApi.readMqttSettings, update: MqttApi.updateMqttSettings }); const { LL } = useI18nContext(); 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={LL.ENABLE_MQTT()} /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.keep_alive)} type="number" onChange={updateFormValue} margin="normal" /> 0 1 2 } label={LL.MQTT_CLEAN_SESSION()} /> } label={LL.MQTT_RETAIN_FLAG()} /> {LL.FORMATTING()} {LL.MQTT_NEST_1()} {LL.MQTT_NEST_2()} } label={LL.MQTT_RESPONSE()} /> {!data.ha_enabled && ( } label={LL.MQTT_PUBLISH_TEXT_1()} /> {data.publish_single && ( } label={LL.MQTT_PUBLISH_TEXT_2()} /> )} )} {!data.publish_single && ( } label={LL.MQTT_PUBLISH_TEXT_3()} /> {data.ha_enabled && ( <> {LL.MQTT_ENTITY_FORMAT_0()} {LL.MQTT_ENTITY_FORMAT_1()} {LL.MQTT_ENTITY_FORMAT_2()} )} )} {LL.MQTT_PUBLISH_INTERVALS()} (0=auto) {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_heartbeat)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_boiler)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_thermostat)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_solar)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_mixer)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} fullWidth variant="outlined" value={numberValue(data.publish_time_sensor)} type="number" onChange={updateFormValue} margin="normal" /> {LL.SECONDS()} }} label={LL.DEFAULT(0)} fullWidth variant="outlined" value={numberValue(data.publish_time_other)} type="number" onChange={updateFormValue} margin="normal" /> ); }; return ( {content()} ); }; export default MqttSettingsForm;