import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Accordion, AccordionSummary, AccordionDetails, Typography, Container, TextField, Button, } from '@mui/material'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useTranslation } from '../common/components/LocalizationProvider'; import PageLayout from '../common/components/PageLayout'; import SettingsMenu from './components/SettingsMenu'; import { useCatchCallback } from '../reactHelper'; import useSettingsStyles from './common/useSettingsStyles'; import SelectField from '../common/components/SelectField'; import { prefixString } from '../common/util/stringUtils'; const AnnouncementPage = () => { const navigate = useNavigate(); const classes = useSettingsStyles(); const t = useTranslation(); const [users, setUsers] = useState([]); const [notificator, setNotificator] = useState(); const [message, setMessage] = useState({}); const handleSend = useCatchCallback(async () => { const query = new URLSearchParams(); users.forEach((userId) => query.append('userId', userId)); const response = await fetch(`/api/notifications/send/${notificator}?${query.toString()}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(message), }); if (response.ok) { navigate(-1); } else { throw Error(await response.text()); } }, [users, notificator, message, navigate]); return ( } breadcrumbs={['serverAnnouncement']}> }> {t('sharedRequired')} setUsers(e.target.value)} endpoint="/api/users" label={t('settingsUsers')} /> setNotificator(e.target.value)} endpoint="/api/notifications/notificators?announcement=true" keyGetter={(it) => it.type} titleGetter={(it) => t(prefixString('notificator', it.type))} label={t('notificationNotificators')} /> setMessage({ ...message, subject: e.target.value })} label={t('sharedSubject')} /> setMessage({ ...message, body: e.target.value })} label={t('commandMessage')} />
); }; export default AnnouncementPage;