diff options
Diffstat (limited to 'modern/src/settings/CommandDevicePage.jsx')
-rw-r--r-- | modern/src/settings/CommandDevicePage.jsx | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/modern/src/settings/CommandDevicePage.jsx b/modern/src/settings/CommandDevicePage.jsx deleted file mode 100644 index b3144cd0..00000000 --- a/modern/src/settings/CommandDevicePage.jsx +++ /dev/null @@ -1,111 +0,0 @@ -import React, { useState } from 'react'; -import { useNavigate, useParams } from 'react-router-dom'; -import { - Accordion, - AccordionSummary, - AccordionDetails, - Typography, - Container, - Button, -} from '@mui/material'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import { useTranslation } from '../common/components/LocalizationProvider'; -import BaseCommandView from './components/BaseCommandView'; -import SelectField from '../common/components/SelectField'; -import PageLayout from '../common/components/PageLayout'; -import SettingsMenu from './components/SettingsMenu'; -import { useCatch } from '../reactHelper'; -import { useRestriction } from '../common/util/permissions'; -import useSettingsStyles from './common/useSettingsStyles'; - -const CommandDevicePage = () => { - const navigate = useNavigate(); - const classes = useSettingsStyles(); - const t = useTranslation(); - - const { id } = useParams(); - - const [savedId, setSavedId] = useState(0); - const [item, setItem] = useState({}); - - const limitCommands = useRestriction('limitCommands'); - - const handleSend = useCatch(async () => { - let command; - if (savedId) { - const response = await fetch(`/api/commands/${savedId}`); - if (response.ok) { - command = await response.json(); - } else { - throw Error(await response.text()); - } - } else { - command = item; - } - - command.deviceId = parseInt(id, 10); - - const response = await fetch('/api/commands/send', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(command), - }); - - if (response.ok) { - navigate(-1); - } else { - throw Error(await response.text()); - } - }); - - const validate = () => savedId || (item && item.type); - - return ( - <PageLayout menu={<SettingsMenu />} breadcrumbs={['settingsTitle', 'deviceCommand']}> - <Container maxWidth="xs" className={classes.container}> - <Accordion defaultExpanded> - <AccordionSummary expandIcon={<ExpandMoreIcon />}> - <Typography variant="subtitle1"> - {t('sharedRequired')} - </Typography> - </AccordionSummary> - <AccordionDetails className={classes.details}> - <SelectField - value={savedId} - emptyValue={limitCommands ? null : 0} - emptyTitle={t('sharedNew')} - onChange={(e) => setSavedId(e.target.value)} - endpoint={`/api/commands/send?deviceId=${id}`} - titleGetter={(it) => it.description} - label={t('sharedSavedCommand')} - /> - {!limitCommands && !savedId && ( - <BaseCommandView deviceId={id} item={item} setItem={setItem} /> - )} - </AccordionDetails> - </Accordion> - <div className={classes.buttons}> - <Button - type="button" - color="primary" - variant="outlined" - onClick={() => navigate(-1)} - > - {t('sharedCancel')} - </Button> - <Button - type="button" - color="primary" - variant="contained" - onClick={handleSend} - disabled={!validate()} - > - {t('commandSend')} - </Button> - </div> - </Container> - </PageLayout> - ); -}; - -export default CommandDevicePage; |