UNPKG

matrix-react-sdk

Version:
70 lines (65 loc) 11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.RoomEchoChamber = exports.CachedRoomKey = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _matrix = require("matrix-js-sdk/src/matrix"); var _GenericEchoChamber = require("./GenericEchoChamber"); var _RoomNotifs = require("../../RoomNotifs"); var _languageHandler = require("../../languageHandler"); /* 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 CachedRoomKey = exports.CachedRoomKey = /*#__PURE__*/function (CachedRoomKey) { CachedRoomKey[CachedRoomKey["NotificationVolume"] = 0] = "NotificationVolume"; return CachedRoomKey; }({}); class RoomEchoChamber extends _GenericEchoChamber.GenericEchoChamber { constructor(context) { super(context, k => this.properties.get(k)); (0, _defineProperty2.default)(this, "properties", new Map()); (0, _defineProperty2.default)(this, "onAccountData", event => { if (!this.matrixClient) return; if (event.getType() === _matrix.EventType.PushRules) { const currentVolume = this.properties.get(CachedRoomKey.NotificationVolume); const newVolume = (0, _RoomNotifs.getRoomNotifsState)(this.matrixClient, this.context.room.roomId); if (currentVolume !== newVolume) { this.updateNotificationVolume(); } } }); } onClientChanged(oldClient, newClient) { this.properties.clear(); oldClient?.removeListener(_matrix.ClientEvent.AccountData, this.onAccountData); if (newClient) { // Register the listeners first newClient.on(_matrix.ClientEvent.AccountData, this.onAccountData); // Then populate the properties map this.updateNotificationVolume(); } } updateNotificationVolume() { const state = this.matrixClient ? (0, _RoomNotifs.getRoomNotifsState)(this.matrixClient, this.context.room.roomId) : null; if (state) this.properties.set(CachedRoomKey.NotificationVolume, state);else this.properties.delete(CachedRoomKey.NotificationVolume); this.markEchoReceived(CachedRoomKey.NotificationVolume); this.emit(_GenericEchoChamber.PROPERTY_UPDATED, CachedRoomKey.NotificationVolume); } // ---- helpers below here ---- get notificationVolume() { return this.getValue(CachedRoomKey.NotificationVolume); } set notificationVolume(v) { if (v === undefined) return; this.setValue((0, _languageHandler._t)("notifications|error_change_title"), CachedRoomKey.NotificationVolume, v, async () => { return (0, _RoomNotifs.setRoomNotifsState)(this.context.room.client, this.context.room.roomId, v); }, _GenericEchoChamber.implicitlyReverted); } } exports.RoomEchoChamber = RoomEchoChamber; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl9HZW5lcmljRWNob0NoYW1iZXIiLCJfUm9vbU5vdGlmcyIsIl9sYW5ndWFnZUhhbmRsZXIiLCJDYWNoZWRSb29tS2V5IiwiZXhwb3J0cyIsIlJvb21FY2hvQ2hhbWJlciIsIkdlbmVyaWNFY2hvQ2hhbWJlciIsImNvbnN0cnVjdG9yIiwiY29udGV4dCIsImsiLCJwcm9wZXJ0aWVzIiwiZ2V0IiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJNYXAiLCJldmVudCIsIm1hdHJpeENsaWVudCIsImdldFR5cGUiLCJFdmVudFR5cGUiLCJQdXNoUnVsZXMiLCJjdXJyZW50Vm9sdW1lIiwiTm90aWZpY2F0aW9uVm9sdW1lIiwibmV3Vm9sdW1lIiwiZ2V0Um9vbU5vdGlmc1N0YXRlIiwicm9vbSIsInJvb21JZCIsInVwZGF0ZU5vdGlmaWNhdGlvblZvbHVtZSIsIm9uQ2xpZW50Q2hhbmdlZCIsIm9sZENsaWVudCIsIm5ld0NsaWVudCIsImNsZWFyIiwicmVtb3ZlTGlzdGVuZXIiLCJDbGllbnRFdmVudCIsIkFjY291bnREYXRhIiwib25BY2NvdW50RGF0YSIsIm9uIiwic3RhdGUiLCJzZXQiLCJkZWxldGUiLCJtYXJrRWNob1JlY2VpdmVkIiwiZW1pdCIsIlBST1BFUlRZX1VQREFURUQiLCJub3RpZmljYXRpb25Wb2x1bWUiLCJnZXRWYWx1ZSIsInYiLCJ1bmRlZmluZWQiLCJzZXRWYWx1ZSIsIl90Iiwic2V0Um9vbU5vdGlmc1N0YXRlIiwiY2xpZW50IiwiaW1wbGljaXRseVJldmVydGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3Jlcy9sb2NhbC1lY2hvL1Jvb21FY2hvQ2hhbWJlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBNYXRyaXhFdmVudCwgQ2xpZW50RXZlbnQsIE1hdHJpeENsaWVudCwgRXZlbnRUeXBlIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBHZW5lcmljRWNob0NoYW1iZXIsIGltcGxpY2l0bHlSZXZlcnRlZCwgUFJPUEVSVFlfVVBEQVRFRCB9IGZyb20gXCIuL0dlbmVyaWNFY2hvQ2hhbWJlclwiO1xuaW1wb3J0IHsgZ2V0Um9vbU5vdGlmc1N0YXRlLCBSb29tTm90aWZTdGF0ZSwgc2V0Um9vbU5vdGlmc1N0YXRlIH0gZnJvbSBcIi4uLy4uL1Jvb21Ob3RpZnNcIjtcbmltcG9ydCB7IFJvb21FY2hvQ29udGV4dCB9IGZyb20gXCIuL1Jvb21FY2hvQ29udGV4dFwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5cbmV4cG9ydCBlbnVtIENhY2hlZFJvb21LZXkge1xuICAgIE5vdGlmaWNhdGlvblZvbHVtZSxcbn1cblxuZXhwb3J0IGNsYXNzIFJvb21FY2hvQ2hhbWJlciBleHRlbmRzIEdlbmVyaWNFY2hvQ2hhbWJlcjxSb29tRWNob0NvbnRleHQsIENhY2hlZFJvb21LZXksIFJvb21Ob3RpZlN0YXRlIHwgdW5kZWZpbmVkPiB7XG4gICAgcHJpdmF0ZSBwcm9wZXJ0aWVzID0gbmV3IE1hcDxDYWNoZWRSb29tS2V5LCBSb29tTm90aWZTdGF0ZT4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250ZXh0OiBSb29tRWNob0NvbnRleHQpIHtcbiAgICAgICAgc3VwZXIoY29udGV4dCwgKGspID0+IHRoaXMucHJvcGVydGllcy5nZXQoaykpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNsaWVudENoYW5nZWQob2xkQ2xpZW50OiBNYXRyaXhDbGllbnQgfCBudWxsLCBuZXdDbGllbnQ6IE1hdHJpeENsaWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzLmNsZWFyKCk7XG4gICAgICAgIG9sZENsaWVudD8ucmVtb3ZlTGlzdGVuZXIoQ2xpZW50RXZlbnQuQWNjb3VudERhdGEsIHRoaXMub25BY2NvdW50RGF0YSk7XG4gICAgICAgIGlmIChuZXdDbGllbnQpIHtcbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBsaXN0ZW5lcnMgZmlyc3RcbiAgICAgICAgICAgIG5ld0NsaWVudC5vbihDbGllbnRFdmVudC5BY2NvdW50RGF0YSwgdGhpcy5vbkFjY291bnREYXRhKTtcblxuICAgICAgICAgICAgLy8gVGhlbiBwb3B1bGF0ZSB0aGUgcHJvcGVydGllcyBtYXBcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTm90aWZpY2F0aW9uVm9sdW1lKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQWNjb3VudERhdGEgPSAoZXZlbnQ6IE1hdHJpeEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5tYXRyaXhDbGllbnQpIHJldHVybjtcbiAgICAgICAgaWYgKGV2ZW50LmdldFR5cGUoKSA9PT0gRXZlbnRUeXBlLlB1c2hSdWxlcykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZvbHVtZSA9IHRoaXMucHJvcGVydGllcy5nZXQoQ2FjaGVkUm9vbUtleS5Ob3RpZmljYXRpb25Wb2x1bWUpO1xuICAgICAgICAgICAgY29uc3QgbmV3Vm9sdW1lID0gZ2V0Um9vbU5vdGlmc1N0YXRlKHRoaXMubWF0cml4Q2xpZW50LCB0aGlzLmNvbnRleHQucm9vbS5yb29tSWQpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWb2x1bWUgIT09IG5ld1ZvbHVtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTm90aWZpY2F0aW9uVm9sdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVOb3RpZmljYXRpb25Wb2x1bWUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5tYXRyaXhDbGllbnQgPyBnZXRSb29tTm90aWZzU3RhdGUodGhpcy5tYXRyaXhDbGllbnQsIHRoaXMuY29udGV4dC5yb29tLnJvb21JZCkgOiBudWxsO1xuICAgICAgICBpZiAoc3RhdGUpIHRoaXMucHJvcGVydGllcy5zZXQoQ2FjaGVkUm9vbUtleS5Ob3RpZmljYXRpb25Wb2x1bWUsIHN0YXRlKTtcbiAgICAgICAgZWxzZSB0aGlzLnByb3BlcnRpZXMuZGVsZXRlKENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICAgICAgdGhpcy5tYXJrRWNob1JlY2VpdmVkKENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICAgICAgdGhpcy5lbWl0KFBST1BFUlRZX1VQREFURUQsIENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tIGhlbHBlcnMgYmVsb3cgaGVyZSAtLS0tXG5cbiAgICBwdWJsaWMgZ2V0IG5vdGlmaWNhdGlvblZvbHVtZSgpOiBSb29tTm90aWZTdGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG5vdGlmaWNhdGlvblZvbHVtZSh2OiBSb29tTm90aWZTdGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoXG4gICAgICAgICAgICBfdChcIm5vdGlmaWNhdGlvbnN8ZXJyb3JfY2hhbmdlX3RpdGxlXCIpLFxuICAgICAgICAgICAgQ2FjaGVkUm9vbUtleS5Ob3RpZmljYXRpb25Wb2x1bWUsXG4gICAgICAgICAgICB2LFxuICAgICAgICAgICAgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXRSb29tTm90aWZzU3RhdGUodGhpcy5jb250ZXh0LnJvb20uY2xpZW50LCB0aGlzLmNvbnRleHQucm9vbS5yb29tSWQsIHYpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltcGxpY2l0bHlSZXZlcnRlZCxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BLElBZVlJLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLDBCQUFiQSxhQUFhO0VBQWJBLGFBQWEsQ0FBYkEsYUFBYTtFQUFBLE9BQWJBLGFBQWE7QUFBQTtBQUlsQixNQUFNRSxlQUFlLFNBQVNDLHNDQUFrQixDQUE2RDtFQUd6R0MsV0FBV0EsQ0FBQ0MsT0FBd0IsRUFBRTtJQUN6QyxLQUFLLENBQUNBLE9BQU8sRUFBR0MsQ0FBQyxJQUFLLElBQUksQ0FBQ0MsVUFBVSxDQUFDQyxHQUFHLENBQUNGLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBQUcsZ0JBQUEsQ0FBQUMsT0FBQSxzQkFIN0IsSUFBSUMsR0FBRyxDQUFnQyxDQUFDO0lBQUEsSUFBQUYsZ0JBQUEsQ0FBQUMsT0FBQSx5QkFrQnBDRSxLQUFrQixJQUFXO01BQ2xELElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQVksRUFBRTtNQUN4QixJQUFJRCxLQUFLLENBQUNFLE9BQU8sQ0FBQyxDQUFDLEtBQUtDLGlCQUFTLENBQUNDLFNBQVMsRUFBRTtRQUN6QyxNQUFNQyxhQUFhLEdBQUcsSUFBSSxDQUFDVixVQUFVLENBQUNDLEdBQUcsQ0FBQ1IsYUFBYSxDQUFDa0Isa0JBQWtCLENBQUM7UUFDM0UsTUFBTUMsU0FBUyxHQUFHLElBQUFDLDhCQUFrQixFQUFDLElBQUksQ0FBQ1AsWUFBWSxFQUFFLElBQUksQ0FBQ1IsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDQyxNQUFNLENBQUM7UUFDakYsSUFBSUwsYUFBYSxLQUFLRSxTQUFTLEVBQUU7VUFDN0IsSUFBSSxDQUFDSSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25DO01BQ0o7SUFDSixDQUFDO0VBdkJEO0VBRVVDLGVBQWVBLENBQUNDLFNBQThCLEVBQUVDLFNBQThCLEVBQVE7SUFDNUYsSUFBSSxDQUFDbkIsVUFBVSxDQUFDb0IsS0FBSyxDQUFDLENBQUM7SUFDdkJGLFNBQVMsRUFBRUcsY0FBYyxDQUFDQyxtQkFBVyxDQUFDQyxXQUFXLEVBQUUsSUFBSSxDQUFDQyxhQUFhLENBQUM7SUFDdEUsSUFBSUwsU0FBUyxFQUFFO01BQ1g7TUFDQUEsU0FBUyxDQUFDTSxFQUFFLENBQUNILG1CQUFXLENBQUNDLFdBQVcsRUFBRSxJQUFJLENBQUNDLGFBQWEsQ0FBQzs7TUFFekQ7TUFDQSxJQUFJLENBQUNSLHdCQUF3QixDQUFDLENBQUM7SUFDbkM7RUFDSjtFQWFRQSx3QkFBd0JBLENBQUEsRUFBUztJQUNyQyxNQUFNVSxLQUFLLEdBQUcsSUFBSSxDQUFDcEIsWUFBWSxHQUFHLElBQUFPLDhCQUFrQixFQUFDLElBQUksQ0FBQ1AsWUFBWSxFQUFFLElBQUksQ0FBQ1IsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDQyxNQUFNLENBQUMsR0FBRyxJQUFJO0lBQ3hHLElBQUlXLEtBQUssRUFBRSxJQUFJLENBQUMxQixVQUFVLENBQUMyQixHQUFHLENBQUNsQyxhQUFhLENBQUNrQixrQkFBa0IsRUFBRWUsS0FBSyxDQUFDLENBQUMsS0FDbkUsSUFBSSxDQUFDMUIsVUFBVSxDQUFDNEIsTUFBTSxDQUFDbkMsYUFBYSxDQUFDa0Isa0JBQWtCLENBQUM7SUFDN0QsSUFBSSxDQUFDa0IsZ0JBQWdCLENBQUNwQyxhQUFhLENBQUNrQixrQkFBa0IsQ0FBQztJQUN2RCxJQUFJLENBQUNtQixJQUFJLENBQUNDLG9DQUFnQixFQUFFdEMsYUFBYSxDQUFDa0Isa0JBQWtCLENBQUM7RUFDakU7O0VBRUE7O0VBRUEsSUFBV3FCLGtCQUFrQkEsQ0FBQSxFQUErQjtJQUN4RCxPQUFPLElBQUksQ0FBQ0MsUUFBUSxDQUFDeEMsYUFBYSxDQUFDa0Isa0JBQWtCLENBQUM7RUFDMUQ7RUFFQSxJQUFXcUIsa0JBQWtCQSxDQUFDRSxDQUE2QixFQUFFO0lBQ3pELElBQUlBLENBQUMsS0FBS0MsU0FBUyxFQUFFO0lBQ3JCLElBQUksQ0FBQ0MsUUFBUSxDQUNULElBQUFDLG1CQUFFLEVBQUMsa0NBQWtDLENBQUMsRUFDdEM1QyxhQUFhLENBQUNrQixrQkFBa0IsRUFDaEN1QixDQUFDLEVBQ0QsWUFBMkI7TUFDdkIsT0FBTyxJQUFBSSw4QkFBa0IsRUFBQyxJQUFJLENBQUN4QyxPQUFPLENBQUNnQixJQUFJLENBQUN5QixNQUFNLEVBQUUsSUFBSSxDQUFDekMsT0FBTyxDQUFDZ0IsSUFBSSxDQUFDQyxNQUFNLEVBQUVtQixDQUFDLENBQUM7SUFDcEYsQ0FBQyxFQUNETSxzQ0FDSixDQUFDO0VBQ0w7QUFDSjtBQUFDOUMsT0FBQSxDQUFBQyxlQUFBLEdBQUFBLGVBQUEiLCJpZ25vcmVMaXN0IjpbXX0=