matrix-react-sdk
Version:
SDK for matrix.org using React
71 lines (66 loc) • 9.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NotificationsEnabledController = exports.NotificationBodyEnabledController = void 0;
exports.isPushNotifyDisabled = isPushNotifyDisabled;
var _logger = require("matrix-js-sdk/src/logger");
var _pushprocessor = require("matrix-js-sdk/src/pushprocessor");
var _matrix = require("matrix-js-sdk/src/matrix");
var _SettingController = _interopRequireDefault(require("./SettingController"));
var _MatrixClientPeg = require("../../MatrixClientPeg");
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.
Copyright 2017 Travis Ralston
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
// XXX: This feels wrong.
// .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.PushProcessor(_MatrixClientPeg.MatrixClientPeg.safeGet());
const masterRule = processor.getPushRuleById(".m.rule.master");
if (!masterRule) {
_logger.logger.warn("No master push rule! Notifications are disabled for this user.");
return true;
}
// If the rule is enabled then check it does not notify on everything
return masterRule.enabled && !masterRule.actions.includes(_matrix.PushRuleActionName.Notify);
}
function getNotifier() {
// TODO: [TS] Formal type that doesn't cause a cyclical reference.
// eslint-disable-next-line @typescript-eslint/no-var-requires
let Notifier = require("../../Notifier"); // avoids cyclical references
if (Notifier.default) Notifier = Notifier.default; // correct for webpack require() weirdness
return Notifier;
}
class NotificationsEnabledController extends _SettingController.default {
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
if (!getNotifier().isPossible()) return false;
if (calculatedValue === null || calculatedAtLevel === "default") {
return !isPushNotifyDisabled();
}
return calculatedValue;
}
onChange(level, roomId, newValue) {
if (getNotifier().supportsDesktopNotifications()) {
getNotifier().setEnabled(newValue);
}
}
}
exports.NotificationsEnabledController = NotificationsEnabledController;
class NotificationBodyEnabledController extends _SettingController.default {
getValueOverride(level, roomId, calculatedValue) {
if (!getNotifier().isPossible()) return false;
if (calculatedValue === null) {
return !isPushNotifyDisabled();
}
return calculatedValue;
}
}
exports.NotificationBodyEnabledController = NotificationBodyEnabledController;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwicmVxdWlyZSIsIl9wdXNocHJvY2Vzc29yIiwiX21hdHJpeCIsIl9TZXR0aW5nQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfTWF0cml4Q2xpZW50UGVnIiwiaXNQdXNoTm90aWZ5RGlzYWJsZWQiLCJwcm9jZXNzb3IiLCJQdXNoUHJvY2Vzc29yIiwiTWF0cml4Q2xpZW50UGVnIiwic2FmZUdldCIsIm1hc3RlclJ1bGUiLCJnZXRQdXNoUnVsZUJ5SWQiLCJsb2dnZXIiLCJ3YXJuIiwiZW5hYmxlZCIsImFjdGlvbnMiLCJpbmNsdWRlcyIsIlB1c2hSdWxlQWN0aW9uTmFtZSIsIk5vdGlmeSIsImdldE5vdGlmaWVyIiwiTm90aWZpZXIiLCJkZWZhdWx0IiwiTm90aWZpY2F0aW9uc0VuYWJsZWRDb250cm9sbGVyIiwiU2V0dGluZ0NvbnRyb2xsZXIiLCJnZXRWYWx1ZU92ZXJyaWRlIiwibGV2ZWwiLCJyb29tSWQiLCJjYWxjdWxhdGVkVmFsdWUiLCJjYWxjdWxhdGVkQXRMZXZlbCIsImlzUG9zc2libGUiLCJvbkNoYW5nZSIsIm5ld1ZhbHVlIiwic3VwcG9ydHNEZXNrdG9wTm90aWZpY2F0aW9ucyIsInNldEVuYWJsZWQiLCJleHBvcnRzIiwiTm90aWZpY2F0aW9uQm9keUVuYWJsZWRDb250cm9sbGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NldHRpbmdzL2NvbnRyb2xsZXJzL05vdGlmaWNhdGlvbkNvbnRyb2xsZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAxNyBUcmF2aXMgUmFsc3RvblxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbG9nZ2VyXCI7XG4vLyBYWFg6IFRoaXMgZmVlbHMgd3JvbmcuXG5pbXBvcnQgeyBQdXNoUHJvY2Vzc29yIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3B1c2hwcm9jZXNzb3JcIjtcbmltcG9ydCB7IFB1c2hSdWxlQWN0aW9uTmFtZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IFNldHRpbmdDb250cm9sbGVyIGZyb20gXCIuL1NldHRpbmdDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBNYXRyaXhDbGllbnRQZWcgfSBmcm9tIFwiLi4vLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vU2V0dGluZ0xldmVsXCI7XG5cbi8vIC5tLnJ1bGUubWFzdGVyIGJlaW5nIGVuYWJsZWQgbWVhbnMgYWxsIGV2ZW50cyBtYXRjaCB0aGF0IHB1c2ggcnVsZVxuLy8gZGVmYXVsdCBhY3Rpb24gb24gdGhpcyBydWxlIGlzIGRvbnRfbm90aWZ5LCBidXQgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2VcbmV4cG9ydCBmdW5jdGlvbiBpc1B1c2hOb3RpZnlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBtYXN0ZXIgcHVzaCBydWxlIGFzIGEgZGVmYXVsdFxuICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBQdXNoUHJvY2Vzc29yKE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkpO1xuICAgIGNvbnN0IG1hc3RlclJ1bGUgPSBwcm9jZXNzb3IuZ2V0UHVzaFJ1bGVCeUlkKFwiLm0ucnVsZS5tYXN0ZXJcIik7XG5cbiAgICBpZiAoIW1hc3RlclJ1bGUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJObyBtYXN0ZXIgcHVzaCBydWxlISBOb3RpZmljYXRpb25zIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyB1c2VyLlwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHJ1bGUgaXMgZW5hYmxlZCB0aGVuIGNoZWNrIGl0IGRvZXMgbm90IG5vdGlmeSBvbiBldmVyeXRoaW5nXG4gICAgcmV0dXJuIG1hc3RlclJ1bGUuZW5hYmxlZCAmJiAhbWFzdGVyUnVsZS5hY3Rpb25zLmluY2x1ZGVzKFB1c2hSdWxlQWN0aW9uTmFtZS5Ob3RpZnkpO1xufVxuXG5mdW5jdGlvbiBnZXROb3RpZmllcigpOiBhbnkge1xuICAgIC8vIFRPRE86IFtUU10gRm9ybWFsIHR5cGUgdGhhdCBkb2Vzbid0IGNhdXNlIGEgY3ljbGljYWwgcmVmZXJlbmNlLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgbGV0IE5vdGlmaWVyID0gcmVxdWlyZShcIi4uLy4uL05vdGlmaWVyXCIpOyAvLyBhdm9pZHMgY3ljbGljYWwgcmVmZXJlbmNlc1xuICAgIGlmIChOb3RpZmllci5kZWZhdWx0KSBOb3RpZmllciA9IE5vdGlmaWVyLmRlZmF1bHQ7IC8vIGNvcnJlY3QgZm9yIHdlYnBhY2sgcmVxdWlyZSgpIHdlaXJkbmVzc1xuICAgIHJldHVybiBOb3RpZmllcjtcbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNFbmFibGVkQ29udHJvbGxlciBleHRlbmRzIFNldHRpbmdDb250cm9sbGVyIHtcbiAgICBwdWJsaWMgZ2V0VmFsdWVPdmVycmlkZShcbiAgICAgICAgbGV2ZWw6IFNldHRpbmdMZXZlbCxcbiAgICAgICAgcm9vbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGN1bGF0ZWRWYWx1ZTogYW55LFxuICAgICAgICBjYWxjdWxhdGVkQXRMZXZlbDogU2V0dGluZ0xldmVsIHwgbnVsbCxcbiAgICApOiBhbnkge1xuICAgICAgICBpZiAoIWdldE5vdGlmaWVyKCkuaXNQb3NzaWJsZSgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgaWYgKGNhbGN1bGF0ZWRWYWx1ZSA9PT0gbnVsbCB8fCBjYWxjdWxhdGVkQXRMZXZlbCA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNQdXNoTm90aWZ5RGlzYWJsZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxjdWxhdGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hhbmdlKGxldmVsOiBTZXR0aW5nTGV2ZWwsIHJvb21JZDogc3RyaW5nLCBuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChnZXROb3RpZmllcigpLnN1cHBvcnRzRGVza3RvcE5vdGlmaWNhdGlvbnMoKSkge1xuICAgICAgICAgICAgZ2V0Tm90aWZpZXIoKS5zZXRFbmFibGVkKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkJvZHlFbmFibGVkQ29udHJvbGxlciBleHRlbmRzIFNldHRpbmdDb250cm9sbGVyIHtcbiAgICBwdWJsaWMgZ2V0VmFsdWVPdmVycmlkZShsZXZlbDogU2V0dGluZ0xldmVsLCByb29tSWQ6IHN0cmluZywgY2FsY3VsYXRlZFZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAoIWdldE5vdGlmaWVyKCkuaXNQb3NzaWJsZSgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgaWYgKGNhbGN1bGF0ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICFpc1B1c2hOb3RpZnlEaXNhYmxlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRWYWx1ZTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsa0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBOztBQVFBO0FBQ0E7QUFDTyxTQUFTTSxvQkFBb0JBLENBQUEsRUFBWTtFQUM1QztFQUNBLE1BQU1DLFNBQVMsR0FBRyxJQUFJQyw0QkFBYSxDQUFDQyxnQ0FBZSxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQzlELE1BQU1DLFVBQVUsR0FBR0osU0FBUyxDQUFDSyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7RUFFOUQsSUFBSSxDQUFDRCxVQUFVLEVBQUU7SUFDYkUsY0FBTSxDQUFDQyxJQUFJLENBQUMsZ0VBQWdFLENBQUM7SUFDN0UsT0FBTyxJQUFJO0VBQ2Y7O0VBRUE7RUFDQSxPQUFPSCxVQUFVLENBQUNJLE9BQU8sSUFBSSxDQUFDSixVQUFVLENBQUNLLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDQywwQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDO0FBQ3hGO0FBRUEsU0FBU0MsV0FBV0EsQ0FBQSxFQUFRO0VBQ3hCO0VBQ0E7RUFDQSxJQUFJQyxRQUFRLEdBQUdyQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0VBQzFDLElBQUlxQixRQUFRLENBQUNDLE9BQU8sRUFBRUQsUUFBUSxHQUFHQSxRQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0VBQ25ELE9BQU9ELFFBQVE7QUFDbkI7QUFFTyxNQUFNRSw4QkFBOEIsU0FBU0MsMEJBQWlCLENBQUM7RUFDM0RDLGdCQUFnQkEsQ0FDbkJDLEtBQW1CLEVBQ25CQyxNQUFjLEVBQ2RDLGVBQW9CLEVBQ3BCQyxpQkFBc0MsRUFDbkM7SUFDSCxJQUFJLENBQUNULFdBQVcsQ0FBQyxDQUFDLENBQUNVLFVBQVUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLO0lBRTdDLElBQUlGLGVBQWUsS0FBSyxJQUFJLElBQUlDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtNQUM3RCxPQUFPLENBQUN2QixvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xDO0lBRUEsT0FBT3NCLGVBQWU7RUFDMUI7RUFFT0csUUFBUUEsQ0FBQ0wsS0FBbUIsRUFBRUMsTUFBYyxFQUFFSyxRQUFhLEVBQVE7SUFDdEUsSUFBSVosV0FBVyxDQUFDLENBQUMsQ0FBQ2EsNEJBQTRCLENBQUMsQ0FBQyxFQUFFO01BQzlDYixXQUFXLENBQUMsQ0FBQyxDQUFDYyxVQUFVLENBQUNGLFFBQVEsQ0FBQztJQUN0QztFQUNKO0FBQ0o7QUFBQ0csT0FBQSxDQUFBWiw4QkFBQSxHQUFBQSw4QkFBQTtBQUVNLE1BQU1hLGlDQUFpQyxTQUFTWiwwQkFBaUIsQ0FBQztFQUM5REMsZ0JBQWdCQSxDQUFDQyxLQUFtQixFQUFFQyxNQUFjLEVBQUVDLGVBQW9CLEVBQU87SUFDcEYsSUFBSSxDQUFDUixXQUFXLENBQUMsQ0FBQyxDQUFDVSxVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSztJQUU3QyxJQUFJRixlQUFlLEtBQUssSUFBSSxFQUFFO01BQzFCLE9BQU8sQ0FBQ3RCLG9CQUFvQixDQUFDLENBQUM7SUFDbEM7SUFFQSxPQUFPc0IsZUFBZTtFQUMxQjtBQUNKO0FBQUNPLE9BQUEsQ0FBQUMsaUNBQUEsR0FBQUEsaUNBQUEiLCJpZ25vcmVMaXN0IjpbXX0=