Hide web push toggles if disabled on server
This commit is contained in:
@@ -115,7 +115,7 @@ class Notifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pushSupported() {
|
pushSupported() {
|
||||||
return "serviceWorker" in navigator && "PushManager" in window;
|
return config.enable_web_push && "serviceWorker" in navigator && "PushManager" in window;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ const SubscribeDialog = (props) => {
|
|||||||
const browserNotificationsSupported = notifier.supported();
|
const browserNotificationsSupported = notifier.supported();
|
||||||
const pushNotificationsSupported = notifier.pushSupported();
|
const pushNotificationsSupported = notifier.pushSupported();
|
||||||
const iosInstallRequired = notifier.iosSupportedButInstallRequired();
|
const iosInstallRequired = notifier.iosSupportedButInstallRequired();
|
||||||
|
const pushPossible = pushNotificationsSupported && iosInstallRequired;
|
||||||
|
|
||||||
const getNotificationTypeFromToggles = (browserNotificationsEnabled, backgroundNotificationsEnabled) => {
|
const getNotificationTypeFromToggles = (browserNotificationsEnabled, backgroundNotificationsEnabled) => {
|
||||||
if (backgroundNotificationsEnabled) {
|
if (backgroundNotificationsEnabled) {
|
||||||
@@ -138,12 +139,14 @@ const SubscribePage = (props) => {
|
|||||||
const [notificationsExplicitlyDenied, setNotificationsExplicitlyDenied] = useState(notifier.denied());
|
const [notificationsExplicitlyDenied, setNotificationsExplicitlyDenied] = useState(notifier.denied());
|
||||||
// default to on if notifications are already granted
|
// default to on if notifications are already granted
|
||||||
const [browserNotificationsEnabled, setBrowserNotificationsEnabled] = useState(notifier.granted());
|
const [browserNotificationsEnabled, setBrowserNotificationsEnabled] = useState(notifier.granted());
|
||||||
const [backgroundNotificationsEnabled, setBackgroundNotificationsEnabled] = useState(props.webPushDefaultEnabled === "enabled");
|
const [backgroundNotificationsEnabled, setBackgroundNotificationsEnabled] = useState(
|
||||||
|
pushPossible && props.webPushDefaultEnabled === "enabled"
|
||||||
|
);
|
||||||
|
|
||||||
const handleBrowserNotificationsChanged = async (e) => {
|
const handleBrowserNotificationsChanged = async (e) => {
|
||||||
if (e.target.checked && (await notifier.maybeRequestPermission())) {
|
if (e.target.checked && (await notifier.maybeRequestPermission())) {
|
||||||
setBrowserNotificationsEnabled(true);
|
setBrowserNotificationsEnabled(true);
|
||||||
if (props.webPushDefaultEnabled === "enabled") {
|
if (pushPossible && props.webPushDefaultEnabled === "enabled") {
|
||||||
setBackgroundNotificationsEnabled(true);
|
setBackgroundNotificationsEnabled(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user