UNPKG

matrix-react-sdk

Version:
61 lines (57 loc) 6.39 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.SummarizedNotificationState = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _NotificationLevel = require("./NotificationLevel"); var _NotificationState = require("./NotificationState"); /* 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. */ /** * Summarizes a number of states into a unique snapshot. To populate, call * the add() function with the notification states to be included. * * Useful for community notification counts, global notification counts, etc. */ class SummarizedNotificationState extends _NotificationState.NotificationState { constructor() { super(); (0, _defineProperty2.default)(this, "totalStatesWithUnread", 0); this._symbol = null; this._count = 0; this._level = _NotificationLevel.NotificationLevel.None; } get numUnreadStates() { return this.totalStatesWithUnread; } /** * Append a notification state to this snapshot, taking the loudest NotificationColor * of the two. By default this will not adopt the symbol of the other notification * state to prevent the count from being lost in typical usage. * @param other The other notification state to append. * @param includeSymbol If true, the notification state's symbol will be taken if one * is present. */ add(other, includeSymbol = false) { if (other.symbol && includeSymbol) { this._symbol = other.symbol; } if (other.count) { this._count += other.count; } if (other.level > this.level) { this._level = other.level; } if (other.hasUnreadCount) { this.totalStatesWithUnread++; } } } exports.SummarizedNotificationState = SummarizedNotificationState; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTm90aWZpY2F0aW9uTGV2ZWwiLCJyZXF1aXJlIiwiX05vdGlmaWNhdGlvblN0YXRlIiwiU3VtbWFyaXplZE5vdGlmaWNhdGlvblN0YXRlIiwiTm90aWZpY2F0aW9uU3RhdGUiLCJjb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiX3N5bWJvbCIsIl9jb3VudCIsIl9sZXZlbCIsIk5vdGlmaWNhdGlvbkxldmVsIiwiTm9uZSIsIm51bVVucmVhZFN0YXRlcyIsInRvdGFsU3RhdGVzV2l0aFVucmVhZCIsImFkZCIsIm90aGVyIiwiaW5jbHVkZVN5bWJvbCIsInN5bWJvbCIsImNvdW50IiwibGV2ZWwiLCJoYXNVbnJlYWRDb3VudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmVzL25vdGlmaWNhdGlvbnMvU3VtbWFyaXplZE5vdGlmaWNhdGlvblN0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbkxldmVsIH0gZnJvbSBcIi4vTm90aWZpY2F0aW9uTGV2ZWxcIjtcbmltcG9ydCB7IE5vdGlmaWNhdGlvblN0YXRlIH0gZnJvbSBcIi4vTm90aWZpY2F0aW9uU3RhdGVcIjtcblxuLyoqXG4gKiBTdW1tYXJpemVzIGEgbnVtYmVyIG9mIHN0YXRlcyBpbnRvIGEgdW5pcXVlIHNuYXBzaG90LiBUbyBwb3B1bGF0ZSwgY2FsbFxuICogdGhlIGFkZCgpIGZ1bmN0aW9uIHdpdGggdGhlIG5vdGlmaWNhdGlvbiBzdGF0ZXMgdG8gYmUgaW5jbHVkZWQuXG4gKlxuICogVXNlZnVsIGZvciBjb21tdW5pdHkgbm90aWZpY2F0aW9uIGNvdW50cywgZ2xvYmFsIG5vdGlmaWNhdGlvbiBjb3VudHMsIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1bW1hcml6ZWROb3RpZmljYXRpb25TdGF0ZSBleHRlbmRzIE5vdGlmaWNhdGlvblN0YXRlIHtcbiAgICBwcml2YXRlIHRvdGFsU3RhdGVzV2l0aFVucmVhZCA9IDA7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3N5bWJvbCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fbGV2ZWwgPSBOb3RpZmljYXRpb25MZXZlbC5Ob25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtVW5yZWFkU3RhdGVzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsU3RhdGVzV2l0aFVucmVhZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBlbmQgYSBub3RpZmljYXRpb24gc3RhdGUgdG8gdGhpcyBzbmFwc2hvdCwgdGFraW5nIHRoZSBsb3VkZXN0IE5vdGlmaWNhdGlvbkNvbG9yXG4gICAgICogb2YgdGhlIHR3by4gQnkgZGVmYXVsdCB0aGlzIHdpbGwgbm90IGFkb3B0IHRoZSBzeW1ib2wgb2YgdGhlIG90aGVyIG5vdGlmaWNhdGlvblxuICAgICAqIHN0YXRlIHRvIHByZXZlbnQgdGhlIGNvdW50IGZyb20gYmVpbmcgbG9zdCBpbiB0eXBpY2FsIHVzYWdlLlxuICAgICAqIEBwYXJhbSBvdGhlciBUaGUgb3RoZXIgbm90aWZpY2F0aW9uIHN0YXRlIHRvIGFwcGVuZC5cbiAgICAgKiBAcGFyYW0gaW5jbHVkZVN5bWJvbCBJZiB0cnVlLCB0aGUgbm90aWZpY2F0aW9uIHN0YXRlJ3Mgc3ltYm9sIHdpbGwgYmUgdGFrZW4gaWYgb25lXG4gICAgICogaXMgcHJlc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkKG90aGVyOiBOb3RpZmljYXRpb25TdGF0ZSwgaW5jbHVkZVN5bWJvbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChvdGhlci5zeW1ib2wgJiYgaW5jbHVkZVN5bWJvbCkge1xuICAgICAgICAgICAgdGhpcy5fc3ltYm9sID0gb3RoZXIuc3ltYm9sO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlci5jb3VudCkge1xuICAgICAgICAgICAgdGhpcy5fY291bnQgKz0gb3RoZXIuY291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyLmxldmVsID4gdGhpcy5sZXZlbCkge1xuICAgICAgICAgICAgdGhpcy5fbGV2ZWwgPSBvdGhlci5sZXZlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIuaGFzVW5yZWFkQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxTdGF0ZXNXaXRoVW5yZWFkKys7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7QUFUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSwyQkFBMkIsU0FBU0Msb0NBQWlCLENBQUM7RUFHeERDLFdBQVdBLENBQUEsRUFBRztJQUNqQixLQUFLLENBQUMsQ0FBQztJQUFDLElBQUFDLGdCQUFBLENBQUFDLE9BQUEsaUNBSG9CLENBQUM7SUFJN0IsSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSTtJQUNuQixJQUFJLENBQUNDLE1BQU0sR0FBRyxDQUFDO0lBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdDLG9DQUFpQixDQUFDQyxJQUFJO0VBQ3hDO0VBRUEsSUFBV0MsZUFBZUEsQ0FBQSxFQUFXO0lBQ2pDLE9BQU8sSUFBSSxDQUFDQyxxQkFBcUI7RUFDckM7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNXQyxHQUFHQSxDQUFDQyxLQUF3QixFQUFFQyxhQUFhLEdBQUcsS0FBSyxFQUFRO0lBQzlELElBQUlELEtBQUssQ0FBQ0UsTUFBTSxJQUFJRCxhQUFhLEVBQUU7TUFDL0IsSUFBSSxDQUFDVCxPQUFPLEdBQUdRLEtBQUssQ0FBQ0UsTUFBTTtJQUMvQjtJQUNBLElBQUlGLEtBQUssQ0FBQ0csS0FBSyxFQUFFO01BQ2IsSUFBSSxDQUFDVixNQUFNLElBQUlPLEtBQUssQ0FBQ0csS0FBSztJQUM5QjtJQUNBLElBQUlILEtBQUssQ0FBQ0ksS0FBSyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxFQUFFO01BQzFCLElBQUksQ0FBQ1YsTUFBTSxHQUFHTSxLQUFLLENBQUNJLEtBQUs7SUFDN0I7SUFDQSxJQUFJSixLQUFLLENBQUNLLGNBQWMsRUFBRTtNQUN0QixJQUFJLENBQUNQLHFCQUFxQixFQUFFO0lBQ2hDO0VBQ0o7QUFDSjtBQUFDUSxPQUFBLENBQUFuQiwyQkFBQSxHQUFBQSwyQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==