fix(webpush): only prompt user to allow notifications if enabled in user settings (#1552)

pull/1565/head
TheCatLady 4 years ago committed by GitHub
parent 6c9991d474
commit b05b177776
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -81,10 +81,16 @@ router.get('/status/appdata', (_req, res) => {
}); });
router.use('/user', isAuthenticated(), user); router.use('/user', isAuthenticated(), user);
router.get('/settings/public', async (_req, res) => { router.get('/settings/public', async (req, res) => {
const settings = getSettings(); const settings = getSettings();
if (!req.user?.settings?.notificationTypes.webpush) {
return res
.status(200)
.json({ ...settings.fullPublicSettings, enablePushRegistration: false });
} else {
return res.status(200).json(settings.fullPublicSettings); return res.status(200).json(settings.fullPublicSettings);
}
}); });
router.use( router.use(
'/settings', '/settings',

@ -3,7 +3,7 @@ import { Field, Form, Formik } from 'formik';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
import { useToasts } from 'react-toast-notifications'; import { useToasts } from 'react-toast-notifications';
import useSWR from 'swr'; import useSWR, { mutate } from 'swr';
import globalMessages from '../../../../i18n/globalMessages'; import globalMessages from '../../../../i18n/globalMessages';
import Button from '../../../Common/Button'; import Button from '../../../Common/Button';
import LoadingSpinner from '../../../Common/LoadingSpinner'; import LoadingSpinner from '../../../Common/LoadingSpinner';
@ -44,6 +44,7 @@ const NotificationsWebPush: React.FC = () => {
types: values.types, types: values.types,
options: {}, options: {},
}); });
mutate('/api/v1/settings/public');
addToast(intl.formatMessage(messages.webpushsettingssaved), { addToast(intl.formatMessage(messages.webpushsettingssaved), {
appearance: 'success', appearance: 'success',
autoDismiss: true, autoDismiss: true,

@ -4,7 +4,7 @@ import { useRouter } from 'next/router';
import React from 'react'; import React from 'react';
import { defineMessages, useIntl } from 'react-intl'; import { defineMessages, useIntl } from 'react-intl';
import { useToasts } from 'react-toast-notifications'; import { useToasts } from 'react-toast-notifications';
import useSWR from 'swr'; import useSWR, { mutate } from 'swr';
import { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces'; import { UserSettingsNotificationsResponse } from '../../../../../server/interfaces/api/userSettingsInterfaces';
import { useUser } from '../../../../hooks/useUser'; import { useUser } from '../../../../hooks/useUser';
import globalMessages from '../../../../i18n/globalMessages'; import globalMessages from '../../../../i18n/globalMessages';
@ -48,6 +48,7 @@ const UserWebPushSettings: React.FC = () => {
webpush: values.enableWebPush ? ALL_NOTIFICATIONS : 0, webpush: values.enableWebPush ? ALL_NOTIFICATIONS : 0,
}, },
}); });
mutate('/api/v1/settings/public');
addToast(intl.formatMessage(messages.webpushsettingssaved), { addToast(intl.formatMessage(messages.webpushsettingssaved), {
appearance: 'success', appearance: 'success',
autoDismiss: true, autoDismiss: true,

Loading…
Cancel
Save