matrix-react-sdk
Version:
SDK for matrix.org using React
47 lines (44 loc) • 5.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _SettingController = _interopRequireDefault(require("./SettingController"));
var _SettingsStore = _interopRequireDefault(require("../SettingsStore"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 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.
*/
/**
* Enforces that a boolean setting cannot be enabled if the incompatible setting
* is also enabled, to prevent cascading undefined behaviour between conflicting
* labs flags.
*/
class IncompatibleController extends _SettingController.default {
constructor(settingName, forcedValue = false, incompatibleValue = true) {
super();
this.settingName = settingName;
this.forcedValue = forcedValue;
this.incompatibleValue = incompatibleValue;
}
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
if (this.incompatibleSetting) {
return this.forcedValue;
}
return null; // no override
}
get settingDisabled() {
return this.incompatibleSetting;
}
get incompatibleSetting() {
if (typeof this.incompatibleValue === "function") {
return this.incompatibleValue(_SettingsStore.default.getValue(this.settingName));
}
return _SettingsStore.default.getValue(this.settingName) === this.incompatibleValue;
}
}
exports.default = IncompatibleController;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfU2V0dGluZ0NvbnRyb2xsZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9TZXR0aW5nc1N0b3JlIiwiSW5jb21wYXRpYmxlQ29udHJvbGxlciIsIlNldHRpbmdDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJzZXR0aW5nTmFtZSIsImZvcmNlZFZhbHVlIiwiaW5jb21wYXRpYmxlVmFsdWUiLCJnZXRWYWx1ZU92ZXJyaWRlIiwibGV2ZWwiLCJyb29tSWQiLCJjYWxjdWxhdGVkVmFsdWUiLCJjYWxjdWxhdGVkQXRMZXZlbCIsImluY29tcGF0aWJsZVNldHRpbmciLCJzZXR0aW5nRGlzYWJsZWQiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXR0aW5ncy9jb250cm9sbGVycy9JbmNvbXBhdGlibGVDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBTZXR0aW5nQ29udHJvbGxlciBmcm9tIFwiLi9TZXR0aW5nQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgU2V0dGluZ0xldmVsIH0gZnJvbSBcIi4uL1NldHRpbmdMZXZlbFwiO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSBcIi4uL1NldHRpbmdzU3RvcmVcIjtcblxuLyoqXG4gKiBFbmZvcmNlcyB0aGF0IGEgYm9vbGVhbiBzZXR0aW5nIGNhbm5vdCBiZSBlbmFibGVkIGlmIHRoZSBpbmNvbXBhdGlibGUgc2V0dGluZ1xuICogaXMgYWxzbyBlbmFibGVkLCB0byBwcmV2ZW50IGNhc2NhZGluZyB1bmRlZmluZWQgYmVoYXZpb3VyIGJldHdlZW4gY29uZmxpY3RpbmdcbiAqIGxhYnMgZmxhZ3MuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluY29tcGF0aWJsZUNvbnRyb2xsZXIgZXh0ZW5kcyBTZXR0aW5nQ29udHJvbGxlciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNldHRpbmdOYW1lOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgZm9yY2VkVmFsdWU6IGFueSA9IGZhbHNlLFxuICAgICAgICBwcml2YXRlIGluY29tcGF0aWJsZVZhbHVlOiBhbnkgfCAoKHY6IGFueSkgPT4gYm9vbGVhbikgPSB0cnVlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU92ZXJyaWRlKFxuICAgICAgICBsZXZlbDogU2V0dGluZ0xldmVsLFxuICAgICAgICByb29tSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsY3VsYXRlZFZhbHVlOiBhbnksXG4gICAgICAgIGNhbGN1bGF0ZWRBdExldmVsOiBTZXR0aW5nTGV2ZWwgfCBudWxsLFxuICAgICk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmluY29tcGF0aWJsZVNldHRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcmNlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsOyAvLyBubyBvdmVycmlkZVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2V0dGluZ0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmNvbXBhdGlibGVTZXR0aW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW5jb21wYXRpYmxlU2V0dGluZygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluY29tcGF0aWJsZVZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluY29tcGF0aWJsZVZhbHVlKFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUodGhpcy5zZXR0aW5nTmFtZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTZXR0aW5nc1N0b3JlLmdldFZhbHVlKHRoaXMuc2V0dGluZ05hbWUpID09PSB0aGlzLmluY29tcGF0aWJsZVZhbHVlO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLGtCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxjQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsTUFBTUUsc0JBQXNCLFNBQVNDLDBCQUFpQixDQUFDO0VBQzNEQyxXQUFXQSxDQUNOQyxXQUFtQixFQUNuQkMsV0FBZ0IsR0FBRyxLQUFLLEVBQ3hCQyxpQkFBOEMsR0FBRyxJQUFJLEVBQy9EO0lBQ0UsS0FBSyxDQUFDLENBQUM7SUFBQyxLQUpBRixXQUFtQixHQUFuQkEsV0FBbUI7SUFBQSxLQUNuQkMsV0FBZ0IsR0FBaEJBLFdBQWdCO0lBQUEsS0FDaEJDLGlCQUE4QyxHQUE5Q0EsaUJBQThDO0VBRzFEO0VBRU9DLGdCQUFnQkEsQ0FDbkJDLEtBQW1CLEVBQ25CQyxNQUFjLEVBQ2RDLGVBQW9CLEVBQ3BCQyxpQkFBc0MsRUFDbkM7SUFDSCxJQUFJLElBQUksQ0FBQ0MsbUJBQW1CLEVBQUU7TUFDMUIsT0FBTyxJQUFJLENBQUNQLFdBQVc7SUFDM0I7SUFDQSxPQUFPLElBQUksQ0FBQyxDQUFDO0VBQ2pCO0VBRUEsSUFBV1EsZUFBZUEsQ0FBQSxFQUFZO0lBQ2xDLE9BQU8sSUFBSSxDQUFDRCxtQkFBbUI7RUFDbkM7RUFFQSxJQUFXQSxtQkFBbUJBLENBQUEsRUFBWTtJQUN0QyxJQUFJLE9BQU8sSUFBSSxDQUFDTixpQkFBaUIsS0FBSyxVQUFVLEVBQUU7TUFDOUMsT0FBTyxJQUFJLENBQUNBLGlCQUFpQixDQUFDUSxzQkFBYSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUMzRTtJQUNBLE9BQU9VLHNCQUFhLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUNYLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQ0UsaUJBQWlCO0VBQzlFO0FBQ0o7QUFBQ1UsT0FBQSxDQUFBQyxPQUFBLEdBQUFoQixzQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==