import CancelIcon from '@mui/icons-material/Cancel'; import WarningIcon from '@mui/icons-material/Warning'; import { Button, Checkbox, MenuItem, Grid, Typography, InputAdornment, TextField } from '@mui/material'; import { useContext, useState } from 'react'; import { FeaturesContext } from '../../contexts/features'; import type { ValidateFieldsError } from 'async-validator'; import type { FC } from 'react'; import type { MqttSettings } from 'types'; import * as MqttApi from 'api/mqtt'; import { BlockFormControlLabel, ButtonRow, FormLoader, SectionContent, ValidatedPasswordField, ValidatedTextField, BlockNavigation } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { numberValue, updateValueDirty, useRest } from 'utils'; import { createMqttSettingsValidator, validate } from 'validators'; const MqttSettingsForm: FC = () => { const { loadData, saving, data, updateDataValue, origData, dirtyFlags, setDirtyFlags, blocker, saveData, errorMessage } = useRest({ read: MqttApi.readMqttSettings, update: MqttApi.updateMqttSettings }); const { LL } = useI18nContext(); const { features } = useContext(FeaturesContext); const [fieldErrors, setFieldErrors] = useState(); const updateFormValue = updateValueDirty(origData, dirtyFlags, setDirtyFlags, updateDataValue); const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(createMqttSettingsValidator(data), data); await 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 {/* TODO here */}
{JSON.stringify(features, null, 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 && ( Home Assistant Domoticz {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" /> {dirtyFlags && dirtyFlags.length !== 0 && ( )} ); }; return ( {blocker ? : null} {content()} ); }; export default MqttSettingsForm;