From f673b9ae8d2aa1b6b7bf13484b02cc8d4f46cd08 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 26 Jun 2022 19:27:47 -0700 Subject: Add notification testing --- modern/src/settings/NotificationPage.js | 41 +++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'modern') diff --git a/modern/src/settings/NotificationPage.js b/modern/src/settings/NotificationPage.js index 4aa318ae..a5a9d8d2 100644 --- a/modern/src/settings/NotificationPage.js +++ b/modern/src/settings/NotificationPage.js @@ -8,6 +8,7 @@ import { FormControlLabel, Checkbox, FormGroup, + Button, } from '@mui/material'; import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; @@ -16,6 +17,7 @@ import EditItemView from './components/EditItemView'; import { prefixString, unprefixString } from '../common/util/stringUtils'; import SelectField from '../common/components/SelectField'; import SettingsMenu from './components/SettingsMenu'; +import { useCatch } from '../reactHelper'; const useStyles = makeStyles((theme) => ({ details: { @@ -37,6 +39,19 @@ const NotificationPage = () => { name: t(it), })); + const testNotificators = useCatch(async () => { + await Promise.all(item.notificators.split(/[, ]+/).map(async (notificator) => { + const response = await fetch(`/api/notifications/test/${notificator}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(item), + }); + if (!response.ok) { + throw Error(await response.text()); + } + })); + }); + const validate = () => item && item.type && item.notificators; return ( @@ -66,15 +81,6 @@ const NotificationPage = () => { titleGetter={(it) => t(prefixString('event', it.type))} label={t('sharedType')} /> - setItem({ ...item, notificators: e.target.value.join() })} - endpoint="/api/notifications/notificators" - keyGetter={(it) => it.type} - titleGetter={(it) => t(prefixString('notificator', it.type))} - label={t('notificationNotificators')} - /> {item.type === 'alarm' && ( { label={t('sharedAlarms')} /> )} + setItem({ ...item, notificators: e.target.value.join() })} + endpoint="/api/notifications/notificators" + keyGetter={(it) => it.type} + titleGetter={(it) => t(prefixString('notificator', it.type))} + label={t('notificationNotificators')} + /> +