matrix-react-sdk
Version:
SDK for matrix.org using React
118 lines (116 loc) • 14.9 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NotificationStateSnapshot = exports.NotificationStateEvents = exports.NotificationState = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _matrix = require("matrix-js-sdk/src/matrix");
var _NotificationLevel = require("./NotificationLevel");
var _SettingsStore = _interopRequireDefault(require("../../settings/SettingsStore"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
let NotificationStateEvents = exports.NotificationStateEvents = /*#__PURE__*/function (NotificationStateEvents) {
NotificationStateEvents["Update"] = "update";
return NotificationStateEvents;
}({});
class NotificationState extends _matrix.TypedEventEmitter {
constructor() {
super();
//
(0, _defineProperty2.default)(this, "_symbol", null);
(0, _defineProperty2.default)(this, "_count", 0);
(0, _defineProperty2.default)(this, "_level", _NotificationLevel.NotificationLevel.None);
(0, _defineProperty2.default)(this, "_muted", false);
(0, _defineProperty2.default)(this, "_knocked", false);
(0, _defineProperty2.default)(this, "watcherReferences", []);
this.watcherReferences.push(_SettingsStore.default.watchSetting("feature_hidebold", null, () => {
this.emit(NotificationStateEvents.Update);
}));
}
get symbol() {
return this._symbol;
}
get count() {
return this._count;
}
get level() {
return this._level;
}
get muted() {
return this._muted;
}
get knocked() {
return this._knocked;
}
get isIdle() {
return this.level <= _NotificationLevel.NotificationLevel.None;
}
get isUnread() {
if (this.level > _NotificationLevel.NotificationLevel.Activity) {
return true;
} else {
const hideBold = _SettingsStore.default.getValue("feature_hidebold");
return this.level === _NotificationLevel.NotificationLevel.Activity && !hideBold;
}
}
get hasUnreadCount() {
return this.level >= _NotificationLevel.NotificationLevel.Notification && (!!this.count || !!this.symbol);
}
get hasMentions() {
return this.level >= _NotificationLevel.NotificationLevel.Highlight;
}
emitIfUpdated(snapshot) {
if (snapshot.isDifferentFrom(this)) {
this.emit(NotificationStateEvents.Update);
}
}
snapshot() {
return new NotificationStateSnapshot(this);
}
destroy() {
this.removeAllListeners(NotificationStateEvents.Update);
for (const watcherReference of this.watcherReferences) {
_SettingsStore.default.unwatchSetting(watcherReference);
}
this.watcherReferences = [];
}
}
exports.NotificationState = NotificationState;
class NotificationStateSnapshot {
constructor(state) {
(0, _defineProperty2.default)(this, "symbol", void 0);
(0, _defineProperty2.default)(this, "count", void 0);
(0, _defineProperty2.default)(this, "level", void 0);
(0, _defineProperty2.default)(this, "muted", void 0);
(0, _defineProperty2.default)(this, "knocked", void 0);
this.symbol = state.symbol;
this.count = state.count;
this.level = state.level;
this.muted = state.muted;
this.knocked = state.knocked;
}
isDifferentFrom(other) {
const before = {
count: this.count,
symbol: this.symbol,
level: this.level,
muted: this.muted,
knocked: this.knocked
};
const after = {
count: other.count,
symbol: other.symbol,
level: other.level,
muted: other.muted,
knocked: other.knocked
};
return JSON.stringify(before) !== JSON.stringify(after);
}
}
exports.NotificationStateSnapshot = NotificationStateSnapshot;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl9Ob3RpZmljYXRpb25MZXZlbCIsIl9TZXR0aW5nc1N0b3JlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIk5vdGlmaWNhdGlvblN0YXRlRXZlbnRzIiwiZXhwb3J0cyIsIk5vdGlmaWNhdGlvblN0YXRlIiwiVHlwZWRFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiTm90aWZpY2F0aW9uTGV2ZWwiLCJOb25lIiwid2F0Y2hlclJlZmVyZW5jZXMiLCJwdXNoIiwiU2V0dGluZ3NTdG9yZSIsIndhdGNoU2V0dGluZyIsImVtaXQiLCJVcGRhdGUiLCJzeW1ib2wiLCJfc3ltYm9sIiwiY291bnQiLCJfY291bnQiLCJsZXZlbCIsIl9sZXZlbCIsIm11dGVkIiwiX211dGVkIiwia25vY2tlZCIsIl9rbm9ja2VkIiwiaXNJZGxlIiwiaXNVbnJlYWQiLCJBY3Rpdml0eSIsImhpZGVCb2xkIiwiZ2V0VmFsdWUiLCJoYXNVbnJlYWRDb3VudCIsIk5vdGlmaWNhdGlvbiIsImhhc01lbnRpb25zIiwiSGlnaGxpZ2h0IiwiZW1pdElmVXBkYXRlZCIsInNuYXBzaG90IiwiaXNEaWZmZXJlbnRGcm9tIiwiTm90aWZpY2F0aW9uU3RhdGVTbmFwc2hvdCIsImRlc3Ryb3kiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJ3YXRjaGVyUmVmZXJlbmNlIiwidW53YXRjaFNldHRpbmciLCJzdGF0ZSIsIm90aGVyIiwiYmVmb3JlIiwiYWZ0ZXIiLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3Jlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblN0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IFR5cGVkRXZlbnRFbWl0dGVyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25MZXZlbCB9IGZyb20gXCIuL05vdGlmaWNhdGlvbkxldmVsXCI7XG5pbXBvcnQgeyBJRGVzdHJveWFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvSURlc3Ryb3lhYmxlXCI7XG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElOb3RpZmljYXRpb25TdGF0ZVNuYXBzaG90UGFyYW1zIHtcbiAgICBzeW1ib2w6IHN0cmluZyB8IG51bGw7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBsZXZlbDogTm90aWZpY2F0aW9uTGV2ZWw7XG4gICAgbXV0ZWQ6IGJvb2xlYW47XG4gICAga25vY2tlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uU3RhdGVFdmVudHMge1xuICAgIFVwZGF0ZSA9IFwidXBkYXRlXCIsXG59XG5cbnR5cGUgRXZlbnRIYW5kbGVyTWFwID0ge1xuICAgIFtOb3RpZmljYXRpb25TdGF0ZUV2ZW50cy5VcGRhdGVdOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5vdGlmaWNhdGlvblN0YXRlXG4gICAgZXh0ZW5kcyBUeXBlZEV2ZW50RW1pdHRlcjxOb3RpZmljYXRpb25TdGF0ZUV2ZW50cywgRXZlbnRIYW5kbGVyTWFwPlxuICAgIGltcGxlbWVudHMgSU5vdGlmaWNhdGlvblN0YXRlU25hcHNob3RQYXJhbXMsIElEZXN0cm95YWJsZVxue1xuICAgIC8vXG4gICAgcHJvdGVjdGVkIF9zeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBfY291bnQgPSAwO1xuICAgIHByb3RlY3RlZCBfbGV2ZWw6IE5vdGlmaWNhdGlvbkxldmVsID0gTm90aWZpY2F0aW9uTGV2ZWwuTm9uZTtcbiAgICBwcm90ZWN0ZWQgX211dGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9rbm9ja2VkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHdhdGNoZXJSZWZlcmVuY2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLndhdGNoZXJSZWZlcmVuY2VzLnB1c2goXG4gICAgICAgICAgICBTZXR0aW5nc1N0b3JlLndhdGNoU2V0dGluZyhcImZlYXR1cmVfaGlkZWJvbGRcIiwgbnVsbCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdChOb3RpZmljYXRpb25TdGF0ZUV2ZW50cy5VcGRhdGUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzeW1ib2woKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zeW1ib2w7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY291bnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsZXZlbCgpOiBOb3RpZmljYXRpb25MZXZlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG11dGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXV0ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBrbm9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fa25vY2tlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzSWRsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGV2ZWwgPD0gTm90aWZpY2F0aW9uTGV2ZWwuTm9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVW5yZWFkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5sZXZlbCA+IE5vdGlmaWNhdGlvbkxldmVsLkFjdGl2aXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGVCb2xkID0gU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcImZlYXR1cmVfaGlkZWJvbGRcIik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZXZlbCA9PT0gTm90aWZpY2F0aW9uTGV2ZWwuQWN0aXZpdHkgJiYgIWhpZGVCb2xkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNVbnJlYWRDb3VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGV2ZWwgPj0gTm90aWZpY2F0aW9uTGV2ZWwuTm90aWZpY2F0aW9uICYmICghIXRoaXMuY291bnQgfHwgISF0aGlzLnN5bWJvbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNNZW50aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGV2ZWwgPj0gTm90aWZpY2F0aW9uTGV2ZWwuSGlnaGxpZ2h0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbWl0SWZVcGRhdGVkKHNuYXBzaG90OiBOb3RpZmljYXRpb25TdGF0ZVNuYXBzaG90KTogdm9pZCB7XG4gICAgICAgIGlmIChzbmFwc2hvdC5pc0RpZmZlcmVudEZyb20odGhpcykpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChOb3RpZmljYXRpb25TdGF0ZUV2ZW50cy5VcGRhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90KCk6IE5vdGlmaWNhdGlvblN0YXRlU25hcHNob3Qge1xuICAgICAgICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvblN0YXRlU25hcHNob3QodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKE5vdGlmaWNhdGlvblN0YXRlRXZlbnRzLlVwZGF0ZSk7XG4gICAgICAgIGZvciAoY29uc3Qgd2F0Y2hlclJlZmVyZW5jZSBvZiB0aGlzLndhdGNoZXJSZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBTZXR0aW5nc1N0b3JlLnVud2F0Y2hTZXR0aW5nKHdhdGNoZXJSZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2F0Y2hlclJlZmVyZW5jZXMgPSBbXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TdGF0ZVNuYXBzaG90IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5bWJvbDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsZXZlbDogTm90aWZpY2F0aW9uTGV2ZWw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtdXRlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtub2NrZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IElOb3RpZmljYXRpb25TdGF0ZVNuYXBzaG90UGFyYW1zKSB7XG4gICAgICAgIHRoaXMuc3ltYm9sID0gc3RhdGUuc3ltYm9sO1xuICAgICAgICB0aGlzLmNvdW50ID0gc3RhdGUuY291bnQ7XG4gICAgICAgIHRoaXMubGV2ZWwgPSBzdGF0ZS5sZXZlbDtcbiAgICAgICAgdGhpcy5tdXRlZCA9IHN0YXRlLm11dGVkO1xuICAgICAgICB0aGlzLmtub2NrZWQgPSBzdGF0ZS5rbm9ja2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RpZmZlcmVudEZyb20ob3RoZXI6IElOb3RpZmljYXRpb25TdGF0ZVNuYXBzaG90UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IHtcbiAgICAgICAgICAgIGNvdW50OiB0aGlzLmNvdW50LFxuICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCxcbiAgICAgICAgICAgIGxldmVsOiB0aGlzLmxldmVsLFxuICAgICAgICAgICAgbXV0ZWQ6IHRoaXMubXV0ZWQsXG4gICAgICAgICAgICBrbm9ja2VkOiB0aGlzLmtub2NrZWQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFmdGVyID0ge1xuICAgICAgICAgICAgY291bnQ6IG90aGVyLmNvdW50LFxuICAgICAgICAgICAgc3ltYm9sOiBvdGhlci5zeW1ib2wsXG4gICAgICAgICAgICBsZXZlbDogb3RoZXIubGV2ZWwsXG4gICAgICAgICAgICBtdXRlZDogb3RoZXIubXV0ZWQsXG4gICAgICAgICAgICBrbm9ja2VkOiBvdGhlci5rbm9ja2VkLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYmVmb3JlKSAhPT0gSlNPTi5zdHJpbmdpZnkoYWZ0ZXIpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFRQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxrQkFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxJQXNCWUksdUJBQXVCLEdBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QjtFQUFBLE9BQXZCQSx1QkFBdUI7QUFBQTtBQVE1QixNQUFlRSxpQkFBaUIsU0FDM0JDLHlCQUFpQixDQUU3QjtFQVVXQyxXQUFXQSxDQUFBLEVBQUc7SUFDakIsS0FBSyxDQUFDLENBQUM7SUFWWDtJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUEs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