matrix-react-sdk
Version:
SDK for matrix.org using React
73 lines (70 loc) • 9.72 kB
JavaScript
;
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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