UNPKG

matrix-react-sdk

Version:
73 lines (70 loc) 9.72 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _utils = require("matrix-js-sdk/src/utils"); var _SettingLevel = require("../SettingLevel"); var _AbstractLocalStorageSettingsHandler = _interopRequireDefault(require("./AbstractLocalStorageSettingsHandler")); /* Copyright 2024 New Vector Ltd. Copyright 2019, 2020 - 2022 The Matrix.org Foundation C.I.C. Copyright 2017 Travis Ralston SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ /** * Gets and sets settings at the "room-device" level for the current device in a particular * room. */ class RoomDeviceSettingsHandler extends _AbstractLocalStorageSettingsHandler.default { constructor(watchers) { super(); this.watchers = watchers; } getValue(settingName, roomId) { // Special case blacklist setting to use legacy values if (settingName === "blacklistUnverifiedDevices") { const value = this.read("mx_local_settings"); if (value?.["blacklistUnverifiedDevicesPerRoom"]) { return value["blacklistUnverifiedDevicesPerRoom"][roomId]; } } const value = this.read(this.getKey(settingName, roomId)); if (value) return value.value; return null; } setValue(settingName, roomId, newValue) { // Special case blacklist setting for legacy structure if (settingName === "blacklistUnverifiedDevices") { let value = this.read("mx_local_settings"); if (!value) value = {}; if (!value["blacklistUnverifiedDevicesPerRoom"]) value["blacklistUnverifiedDevicesPerRoom"] = {}; (0, _utils.safeSet)(value["blacklistUnverifiedDevicesPerRoom"], roomId, newValue); this.setObject("mx_local_settings", value); this.watchers.notifyUpdate(settingName, roomId, _SettingLevel.SettingLevel.ROOM_DEVICE, newValue); return Promise.resolve(); } if (newValue === null) { this.removeItem(this.getKey(settingName, roomId)); } else { this.setObject(this.getKey(settingName, roomId), { value: newValue }); } this.watchers.notifyUpdate(settingName, roomId, _SettingLevel.SettingLevel.ROOM_DEVICE, newValue); return Promise.resolve(); } canSetValue(settingName, roomId) { return true; // It's their device, so they should be able to } read(key) { return this.getObject(key); } getKey(settingName, roomId) { return "mx_setting_" + settingName + "_" + roomId; } } exports.default = RoomDeviceSettingsHandler; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbHMiLCJyZXF1aXJlIiwiX1NldHRpbmdMZXZlbCIsIl9BYnN0cmFjdExvY2FsU3RvcmFnZVNldHRpbmdzSGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJSb29tRGV2aWNlU2V0dGluZ3NIYW5kbGVyIiwiQWJzdHJhY3RMb2NhbFN0b3JhZ2VTZXR0aW5nc0hhbmRsZXIiLCJjb25zdHJ1Y3RvciIsIndhdGNoZXJzIiwiZ2V0VmFsdWUiLCJzZXR0aW5nTmFtZSIsInJvb21JZCIsInZhbHVlIiwicmVhZCIsImdldEtleSIsInNldFZhbHVlIiwibmV3VmFsdWUiLCJzYWZlU2V0Iiwic2V0T2JqZWN0Iiwibm90aWZ5VXBkYXRlIiwiU2V0dGluZ0xldmVsIiwiUk9PTV9ERVZJQ0UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlbW92ZUl0ZW0iLCJjYW5TZXRWYWx1ZSIsImtleSIsImdldE9iamVjdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NldHRpbmdzL2hhbmRsZXJzL1Jvb21EZXZpY2VTZXR0aW5nc0hhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTksIDIwMjAgLSAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAxNyBUcmF2aXMgUmFsc3RvblxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBzYWZlU2V0IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3V0aWxzXCI7XG5cbmltcG9ydCB7IFNldHRpbmdMZXZlbCB9IGZyb20gXCIuLi9TZXR0aW5nTGV2ZWxcIjtcbmltcG9ydCB7IFdhdGNoTWFuYWdlciB9IGZyb20gXCIuLi9XYXRjaE1hbmFnZXJcIjtcbmltcG9ydCBBYnN0cmFjdExvY2FsU3RvcmFnZVNldHRpbmdzSGFuZGxlciBmcm9tIFwiLi9BYnN0cmFjdExvY2FsU3RvcmFnZVNldHRpbmdzSGFuZGxlclwiO1xuXG4vKipcbiAqIEdldHMgYW5kIHNldHMgc2V0dGluZ3MgYXQgdGhlIFwicm9vbS1kZXZpY2VcIiBsZXZlbCBmb3IgdGhlIGN1cnJlbnQgZGV2aWNlIGluIGEgcGFydGljdWxhclxuICogcm9vbS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vbURldmljZVNldHRpbmdzSGFuZGxlciBleHRlbmRzIEFic3RyYWN0TG9jYWxTdG9yYWdlU2V0dGluZ3NIYW5kbGVyIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHdhdGNoZXJzOiBXYXRjaE1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUoc2V0dGluZ05hbWU6IHN0cmluZywgcm9vbUlkOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICAvLyBTcGVjaWFsIGNhc2UgYmxhY2tsaXN0IHNldHRpbmcgdG8gdXNlIGxlZ2FjeSB2YWx1ZXNcbiAgICAgICAgaWYgKHNldHRpbmdOYW1lID09PSBcImJsYWNrbGlzdFVudmVyaWZpZWREZXZpY2VzXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkKFwibXhfbG9jYWxfc2V0dGluZ3NcIik7XG4gICAgICAgICAgICBpZiAodmFsdWU/LltcImJsYWNrbGlzdFVudmVyaWZpZWREZXZpY2VzUGVyUm9vbVwiXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtcImJsYWNrbGlzdFVudmVyaWZpZWREZXZpY2VzUGVyUm9vbVwiXVtyb29tSWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlYWQodGhpcy5nZXRLZXkoc2V0dGluZ05hbWUsIHJvb21JZCkpO1xuICAgICAgICBpZiAodmFsdWUpIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHNldHRpbmdOYW1lOiBzdHJpbmcsIHJvb21JZDogc3RyaW5nLCBuZXdWYWx1ZTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZSBibGFja2xpc3Qgc2V0dGluZyBmb3IgbGVnYWN5IHN0cnVjdHVyZVxuICAgICAgICBpZiAoc2V0dGluZ05hbWUgPT09IFwiYmxhY2tsaXN0VW52ZXJpZmllZERldmljZXNcIikge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5yZWFkKFwibXhfbG9jYWxfc2V0dGluZ3NcIik7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IHt9O1xuICAgICAgICAgICAgaWYgKCF2YWx1ZVtcImJsYWNrbGlzdFVudmVyaWZpZWREZXZpY2VzUGVyUm9vbVwiXSkgdmFsdWVbXCJibGFja2xpc3RVbnZlcmlmaWVkRGV2aWNlc1BlclJvb21cIl0gPSB7fTtcbiAgICAgICAgICAgIHNhZmVTZXQodmFsdWVbXCJibGFja2xpc3RVbnZlcmlmaWVkRGV2aWNlc1BlclJvb21cIl0sIHJvb21JZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zZXRPYmplY3QoXCJteF9sb2NhbF9zZXR0aW5nc1wiLCB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLndhdGNoZXJzLm5vdGlmeVVwZGF0ZShzZXR0aW5nTmFtZSwgcm9vbUlkLCBTZXR0aW5nTGV2ZWwuUk9PTV9ERVZJQ0UsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKHRoaXMuZ2V0S2V5KHNldHRpbmdOYW1lLCByb29tSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0T2JqZWN0KHRoaXMuZ2V0S2V5KHNldHRpbmdOYW1lLCByb29tSWQpLCB7IHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2F0Y2hlcnMubm90aWZ5VXBkYXRlKHNldHRpbmdOYW1lLCByb29tSWQsIFNldHRpbmdMZXZlbC5ST09NX0RFVklDRSwgbmV3VmFsdWUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhblNldFZhbHVlKHNldHRpbmdOYW1lOiBzdHJpbmcsIHJvb21JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBJdCdzIHRoZWlyIGRldmljZSwgc28gdGhleSBzaG91bGQgYmUgYWJsZSB0b1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdChrZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0S2V5KHNldHRpbmdOYW1lOiBzdHJpbmcsIHJvb21JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwibXhfc2V0dGluZ19cIiArIHNldHRpbmdOYW1lICsgXCJfXCIgKyByb29tSWQ7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBU0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsb0NBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQWJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNSSx5QkFBeUIsU0FBU0MsNENBQW1DLENBQUM7RUFDaEZDLFdBQVdBLENBQWlCQyxR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