matrix-react-sdk
Version:
SDK for matrix.org using React
101 lines (78 loc) • 10 kB
JavaScript
;
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==