UNPKG

matrix-react-sdk

Version:
101 lines (78 loc) 10 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 _GenericEchoChamber = require("./GenericEchoChamber"); var _RoomNotifs = require("../../RoomNotifs"); var _languageHandler = require("../../languageHandler"); /* Copyright 2020 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ let CachedRoomKey; exports.CachedRoomKey = CachedRoomKey; (function (CachedRoomKey) { CachedRoomKey[CachedRoomKey["NotificationVolume"] = 0] = "NotificationVolume"; })(CachedRoomKey || (exports.CachedRoomKey = CachedRoomKey = {})); class RoomEchoChamber extends _GenericEchoChamber.GenericEchoChamber /*:: <RoomEchoContext, CachedRoomKey, CachedRoomValues>*/ { constructor(context /*: RoomEchoContext*/ ) { super(context, k => this.properties.get(k)); (0, _defineProperty2.default)(this, "properties", new Map()); (0, _defineProperty2.default)(this, "onAccountData", (event /*: MatrixEvent*/ ) => { if (event.getType() === "m.push_rules") { const currentVolume = this.properties.get(CachedRoomKey.NotificationVolume); const newVolume = (0, _RoomNotifs.getRoomNotifsState)(this.context.room.roomId); if (currentVolume !== newVolume) { this.updateNotificationVolume(); } } }); } onClientChanged(oldClient, newClient) { this.properties.clear(); if (oldClient) { oldClient.removeListener("accountData", this.onAccountData); } if (newClient) { // Register the listeners first newClient.on("accountData", this.onAccountData); // Then populate the properties map this.updateNotificationVolume(); } } updateNotificationVolume() { this.properties.set(CachedRoomKey.NotificationVolume, (0, _RoomNotifs.getRoomNotifsState)(this.context.room.roomId)); this.markEchoReceived(CachedRoomKey.NotificationVolume); this.emit(_GenericEchoChamber.PROPERTY_UPDATED, CachedRoomKey.NotificationVolume); } // ---- helpers below here ---- get notificationVolume() /*: Volume*/ { return this.getValue(CachedRoomKey.NotificationVolume); } set notificationVolume(v /*: Volume*/ ) { this.setValue((0, _languageHandler._t)("Change notification settings"), CachedRoomKey.NotificationVolume, v, async () => { return (0, _RoomNotifs.setRoomNotifsState)(this.context.room.roomId, v); }, _GenericEchoChamber.implicitlyReverted); } } exports.RoomEchoChamber = RoomEchoChamber; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZXMvbG9jYWwtZWNoby9Sb29tRWNob0NoYW1iZXIudHMiXSwibmFtZXMiOlsiQ2FjaGVkUm9vbUtleSIsIlJvb21FY2hvQ2hhbWJlciIsIkdlbmVyaWNFY2hvQ2hhbWJlciIsImNvbnN0cnVjdG9yIiwiY29udGV4dCIsImsiLCJwcm9wZXJ0aWVzIiwiZ2V0IiwiTWFwIiwiZXZlbnQiLCJnZXRUeXBlIiwiY3VycmVudFZvbHVtZSIsIk5vdGlmaWNhdGlvblZvbHVtZSIsIm5ld1ZvbHVtZSIsInJvb20iLCJyb29tSWQiLCJ1cGRhdGVOb3RpZmljYXRpb25Wb2x1bWUiLCJvbkNsaWVudENoYW5nZWQiLCJvbGRDbGllbnQiLCJuZXdDbGllbnQiLCJjbGVhciIsInJlbW92ZUxpc3RlbmVyIiwib25BY2NvdW50RGF0YSIsIm9uIiwic2V0IiwibWFya0VjaG9SZWNlaXZlZCIsImVtaXQiLCJQUk9QRVJUWV9VUERBVEVEIiwibm90aWZpY2F0aW9uVm9sdW1lIiwiZ2V0VmFsdWUiLCJ2Iiwic2V0VmFsdWUiLCJpbXBsaWNpdGx5UmV2ZXJ0ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBZ0JBOztBQUNBOztBQUVBOztBQW5CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFXWUEsYTs7O1dBQUFBLGE7QUFBQUEsRUFBQUEsYSxDQUFBQSxhO0dBQUFBLGEsNkJBQUFBLGE7O0FBSUwsTUFBTUMsZUFBTixTQUE4QkM7QUFBOUI7QUFBbUc7QUFHL0ZDLEVBQUFBLFdBQVAsQ0FBbUJDO0FBQW5CO0FBQUEsSUFBNkM7QUFDekMsVUFBTUEsT0FBTixFQUFnQkMsQ0FBRCxJQUFPLEtBQUtDLFVBQUwsQ0FBZ0JDLEdBQWhCLENBQW9CRixDQUFwQixDQUF0QjtBQUR5QyxzREFGeEIsSUFBSUcsR0FBSixFQUV3QjtBQUFBLHlEQWtCckIsQ0FBQ0M7QUFBRDtBQUFBLFNBQXdCO0FBQzVDLFVBQUlBLEtBQUssQ0FBQ0MsT0FBTixPQUFvQixjQUF4QixFQUF3QztBQUNwQyxjQUFNQyxhQUFhLEdBQUcsS0FBS0wsVUFBTCxDQUFnQkMsR0FBaEIsQ0FBb0JQLGFBQWEsQ0FBQ1ksa0JBQWxDLENBQXRCO0FBQ0EsY0FBTUMsU0FBUyxHQUFHLG9DQUFtQixLQUFLVCxPQUFMLENBQWFVLElBQWIsQ0FBa0JDLE1BQXJDLENBQWxCOztBQUNBLFlBQUlKLGFBQWEsS0FBS0UsU0FBdEIsRUFBaUM7QUFDN0IsZUFBS0csd0JBQUw7QUFDSDtBQUNKO0FBQ0osS0ExQjRDO0FBRTVDOztBQUVTQyxFQUFBQSxlQUFWLENBQTBCQyxTQUExQixFQUFxQ0MsU0FBckMsRUFBZ0Q7QUFDNUMsU0FBS2IsVUFBTCxDQUFnQmMsS0FBaEI7O0FBQ0EsUUFBSUYsU0FBSixFQUFlO0FBQ1hBLE1BQUFBLFNBQVMsQ0FBQ0csY0FBVixDQUF5QixhQUF6QixFQUF3QyxLQUFLQyxhQUE3QztBQUNIOztBQUNELFFBQUlILFNBQUosRUFBZTtBQUNYO0FBQ0FBLE1BQUFBLFNBQVMsQ0FBQ0ksRUFBVixDQUFhLGFBQWIsRUFBNEIsS0FBS0QsYUFBakMsRUFGVyxDQUlYOztBQUNBLFdBQUtOLHdCQUFMO0FBQ0g7QUFDSjs7QUFZT0EsRUFBQUEsd0JBQVIsR0FBbUM7QUFDL0IsU0FBS1YsVUFBTCxDQUFnQmtCLEdBQWhCLENBQW9CeEIsYUFBYSxDQUFDWSxrQkFBbEMsRUFBc0Qsb0NBQW1CLEtBQUtSLE9BQUwsQ0FBYVUsSUFBYixDQUFrQkMsTUFBckMsQ0FBdEQ7QUFDQSxTQUFLVSxnQkFBTCxDQUFzQnpCLGFBQWEsQ0FBQ1ksa0JBQXBDO0FBQ0EsU0FBS2MsSUFBTCxDQUFVQyxvQ0FBVixFQUE0QjNCLGFBQWEsQ0FBQ1ksa0JBQTFDO0FBQ0gsR0FuQ3FHLENBcUN0Rzs7O0FBRUEsTUFBV2dCLGtCQUFYO0FBQUE7QUFBd0M7QUFDcEMsV0FBTyxLQUFLQyxRQUFMLENBQWM3QixhQUFhLENBQUNZLGtCQUE1QixDQUFQO0FBQ0g7O0FBRUQsTUFBV2dCLGtCQUFYLENBQThCRTtBQUE5QjtBQUFBLElBQXlDO0FBQ3JDLFNBQUtDLFFBQUwsQ0FBYyx5QkFBRyw4QkFBSCxDQUFkLEVBQWtEL0IsYUFBYSxDQUFDWSxrQkFBaEUsRUFBb0ZrQixDQUFwRixFQUF1RixZQUFZO0FBQy9GLGFBQU8sb0NBQW1CLEtBQUsxQixPQUFMLENBQWFVLElBQWIsQ0FBa0JDLE1BQXJDLEVBQTZDZSxDQUE3QyxDQUFQO0FBQ0gsS0FGRCxFQUVHRSxzQ0FGSDtBQUdIOztBQS9DcUciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7IEdlbmVyaWNFY2hvQ2hhbWJlciwgaW1wbGljaXRseVJldmVydGVkLCBQUk9QRVJUWV9VUERBVEVEIH0gZnJvbSBcIi4vR2VuZXJpY0VjaG9DaGFtYmVyXCI7XG5pbXBvcnQgeyBnZXRSb29tTm90aWZzU3RhdGUsIHNldFJvb21Ob3RpZnNTdGF0ZSB9IGZyb20gXCIuLi8uLi9Sb29tTm90aWZzXCI7XG5pbXBvcnQgeyBSb29tRWNob0NvbnRleHQgfSBmcm9tIFwiLi9Sb29tRWNob0NvbnRleHRcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IHsgVm9sdW1lIH0gZnJvbSBcIi4uLy4uL1Jvb21Ob3RpZnNUeXBlc1wiO1xuaW1wb3J0IHsgTWF0cml4RXZlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbW9kZWxzL2V2ZW50XCI7XG5cbmV4cG9ydCB0eXBlIENhY2hlZFJvb21WYWx1ZXMgPSBWb2x1bWU7XG5cbmV4cG9ydCBlbnVtIENhY2hlZFJvb21LZXkge1xuICAgIE5vdGlmaWNhdGlvblZvbHVtZSxcbn1cblxuZXhwb3J0IGNsYXNzIFJvb21FY2hvQ2hhbWJlciBleHRlbmRzIEdlbmVyaWNFY2hvQ2hhbWJlcjxSb29tRWNob0NvbnRleHQsIENhY2hlZFJvb21LZXksIENhY2hlZFJvb21WYWx1ZXM+IHtcbiAgICBwcml2YXRlIHByb3BlcnRpZXMgPSBuZXcgTWFwPENhY2hlZFJvb21LZXksIENhY2hlZFJvb21WYWx1ZXM+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoY29udGV4dDogUm9vbUVjaG9Db250ZXh0KSB7XG4gICAgICAgIHN1cGVyKGNvbnRleHQsIChrKSA9PiB0aGlzLnByb3BlcnRpZXMuZ2V0KGspKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DbGllbnRDaGFuZ2VkKG9sZENsaWVudCwgbmV3Q2xpZW50KSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcy5jbGVhcigpO1xuICAgICAgICBpZiAob2xkQ2xpZW50KSB7XG4gICAgICAgICAgICBvbGRDbGllbnQucmVtb3ZlTGlzdGVuZXIoXCJhY2NvdW50RGF0YVwiLCB0aGlzLm9uQWNjb3VudERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdDbGllbnQpIHtcbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBsaXN0ZW5lcnMgZmlyc3RcbiAgICAgICAgICAgIG5ld0NsaWVudC5vbihcImFjY291bnREYXRhXCIsIHRoaXMub25BY2NvdW50RGF0YSk7XG5cbiAgICAgICAgICAgIC8vIFRoZW4gcG9wdWxhdGUgdGhlIHByb3BlcnRpZXMgbWFwXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5vdGlmaWNhdGlvblZvbHVtZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFjY291bnREYXRhID0gKGV2ZW50OiBNYXRyaXhFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZ2V0VHlwZSgpID09PSBcIm0ucHVzaF9ydWxlc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Vm9sdW1lID0gdGhpcy5wcm9wZXJ0aWVzLmdldChDYWNoZWRSb29tS2V5Lk5vdGlmaWNhdGlvblZvbHVtZSkgYXMgVm9sdW1lO1xuICAgICAgICAgICAgY29uc3QgbmV3Vm9sdW1lID0gZ2V0Um9vbU5vdGlmc1N0YXRlKHRoaXMuY29udGV4dC5yb29tLnJvb21JZCkgYXMgVm9sdW1lO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWb2x1bWUgIT09IG5ld1ZvbHVtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTm90aWZpY2F0aW9uVm9sdW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVOb3RpZmljYXRpb25Wb2x1bWUoKSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcy5zZXQoQ2FjaGVkUm9vbUtleS5Ob3RpZmljYXRpb25Wb2x1bWUsIGdldFJvb21Ob3RpZnNTdGF0ZSh0aGlzLmNvbnRleHQucm9vbS5yb29tSWQpKTtcbiAgICAgICAgdGhpcy5tYXJrRWNob1JlY2VpdmVkKENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICAgICAgdGhpcy5lbWl0KFBST1BFUlRZX1VQREFURUQsIENhY2hlZFJvb21LZXkuTm90aWZpY2F0aW9uVm9sdW1lKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tIGhlbHBlcnMgYmVsb3cgaGVyZSAtLS0tXG5cbiAgICBwdWJsaWMgZ2V0IG5vdGlmaWNhdGlvblZvbHVtZSgpOiBWb2x1bWUge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZShDYWNoZWRSb29tS2V5Lk5vdGlmaWNhdGlvblZvbHVtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBub3RpZmljYXRpb25Wb2x1bWUodjogVm9sdW1lKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoX3QoXCJDaGFuZ2Ugbm90aWZpY2F0aW9uIHNldHRpbmdzXCIpLCBDYWNoZWRSb29tS2V5Lk5vdGlmaWNhdGlvblZvbHVtZSwgdiwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNldFJvb21Ob3RpZnNTdGF0ZSh0aGlzLmNvbnRleHQucm9vbS5yb29tSWQsIHYpO1xuICAgICAgICB9LCBpbXBsaWNpdGx5UmV2ZXJ0ZWQpO1xuICAgIH1cbn1cbiJdfQ==