import { useState } from 'react'; import CancelIcon from '@mui/icons-material/Cancel'; import WarningIcon from '@mui/icons-material/Warning'; import { Button, Checkbox, Grid, InputAdornment, MenuItem, TextField, Typography } from '@mui/material'; import * as MqttApi from 'api/mqtt'; import type { ValidateFieldsError } from 'async-validator'; import { BlockFormControlLabel, BlockNavigation, ButtonRow, FormLoader, SectionContent, ValidatedPasswordField, ValidatedTextField, useLayoutTitle } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import type { MqttSettingsType } from 'types'; import { numberValue, updateValueDirty, useRest } from 'utils'; import { createMqttSettingsValidator, validate } from 'validators'; const MqttSettings = () => { const { loadData, saving, data, updateDataValue, origData, dirtyFlags, setDirtyFlags, blocker, saveData, errorMessage } = useRest({ read: MqttApi.readMqttSettings, update: MqttApi.updateMqttSettings }); const { LL } = useI18nContext(); useLayoutTitle('MQTT'); const [fieldErrors, setFieldErrors] = useState(); const updateFormValue = updateValueDirty( origData, dirtyFlags, setDirtyFlags, updateDataValue ); const SecondsInputProps = { endAdornment: {LL.SECONDS()} }; const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(createMqttSettingsValidator(data), data); await saveData(); } catch (error) { setFieldErrors(error as ValidateFieldsError); } }; return ( <> } label={LL.ENABLE_MQTT()} /> 0 1 2 {data.enableTLS !== undefined && ( } label={LL.ENABLE_TLS()} /> )} {data.enableTLS === true && ( )} } label={LL.MQTT_CLEAN_SESSION()} /> } label={LL.MQTT_RETAIN_FLAG()} /> {LL.FORMATTING()} {LL.MQTT_NEST_1()} {LL.MQTT_NEST_2()} } label={LL.MQTT_RESPONSE()} /> } label={LL.MQTT_PUBLISH_TEXT_1()} /> {data.publish_single && ( } label={LL.MQTT_PUBLISH_TEXT_2()} /> )} } label={LL.MQTT_PUBLISH_TEXT_3()} /> {data.ha_enabled && ( Home Assistant Domoticz Domoticz (latest) {LL.MQTT_ENTITY_FORMAT_0()} {LL.MQTT_ENTITY_FORMAT_1()} (v3.6) {LL.MQTT_ENTITY_FORMAT_2()} (v3.6) {LL.MQTT_ENTITY_FORMAT_1()} {LL.MQTT_ENTITY_FORMAT_2()} )} {LL.MQTT_PUBLISH_INTERVALS()} (0=auto) {dirtyFlags && dirtyFlags.length !== 0 && ( )} ); }; return ( {blocker ? : null} {content()} ); }; export default MqttSettings;