From ff98242d144158f3bf14d8c44e4dfc8c10245061 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 17 Jun 2020 16:31:42 +0100 Subject: [PATCH] clean up and fix the isMasterRuleEnabled logic --- .../controllers/NotificationControllers.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/settings/controllers/NotificationControllers.js b/src/settings/controllers/NotificationControllers.js index f74dc22e84..e38a5bded1 100644 --- a/src/settings/controllers/NotificationControllers.js +++ b/src/settings/controllers/NotificationControllers.js @@ -20,18 +20,20 @@ import {MatrixClientPeg} from '../../MatrixClientPeg'; // XXX: This feels wrong. import {PushProcessor} from "matrix-js-sdk/src/pushprocessor"; -function isMasterRuleEnabled() { +// .m.rule.master being enabled means all events match that push rule +// default action on this rule is dont_notify, but it could be something else +function isPushNotifyDisabled() { // Return the value of the master push rule as a default const processor = new PushProcessor(MatrixClientPeg.get()); const masterRule = processor.getPushRuleById(".m.rule.master"); if (!masterRule) { console.warn("No master push rule! Notifications are disabled for this user."); - return false; + return true; } - // Why enabled == false means "enabled" is beyond me. - return !masterRule.enabled; + // If the rule is enabled then check it does not notify on everything + return masterRule.enabled && !masterRule.actions.includes("notify"); } function getNotifier() { @@ -45,7 +47,7 @@ export class NotificationsEnabledController extends SettingController { if (!getNotifier().isPossible()) return false; if (calculatedValue === null || calculatedAtLevel === "default") { - return !isMasterRuleEnabled(); + return !isPushNotifyDisabled(); } return calculatedValue; @@ -63,7 +65,7 @@ export class NotificationBodyEnabledController extends SettingController { if (!getNotifier().isPossible()) return false; if (calculatedValue === null) { - return !isMasterRuleEnabled(); + return !isPushNotifyDisabled(); } return calculatedValue;