matrix-react-sdk
Version:
SDK for matrix.org using React
61 lines (58 loc) • 8.49 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _SettingsHandler = _interopRequireDefault(require("./SettingsHandler"));
var _PlatformPeg = _interopRequireDefault(require("../../PlatformPeg"));
var _Settings = require("../Settings");
var _SettingLevel = require("../SettingLevel");
var _dispatcher = _interopRequireDefault(require("../../dispatcher/dispatcher"));
var _actions = require("../../dispatcher/actions");
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 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.
*/
/**
* Gets and sets settings at the "platform" level for the current device.
* This handler does not make use of the roomId parameter.
*/
class PlatformSettingsHandler extends _SettingsHandler.default {
constructor() {
super();
(0, _defineProperty2.default)(this, "store", {});
(0, _defineProperty2.default)(this, "onAction", payload => {
if (payload.action === _actions.Action.PlatformSet) {
this.store = {};
// Load setting values as they are async and `getValue` must be synchronous
Object.entries(_Settings.SETTINGS).forEach(([key, setting]) => {
if (setting.supportedLevels?.includes(_SettingLevel.SettingLevel.PLATFORM) && payload.platform.supportsSetting(key)) {
payload.platform.getSettingValue(key).then(value => {
this.store[key] = value;
});
}
});
}
});
_dispatcher.default.register(this.onAction);
}
canSetValue(settingName, roomId) {
return _PlatformPeg.default.get()?.supportsSetting(settingName) ?? false;
}
getValue(settingName, roomId) {
return this.store[settingName];
}
async setValue(settingName, roomId, newValue) {
this.store[settingName] = newValue; // keep cache up to date for synchronous access
await _PlatformPeg.default.get()?.setSettingValue(settingName, newValue);
}
isSupported() {
return _PlatformPeg.default.get()?.supportsSetting() ?? false;
}
}
exports.default = PlatformSettingsHandler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfU2V0dGluZ3NIYW5kbGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfUGxhdGZvcm1QZWciLCJfU2V0dGluZ3MiLCJfU2V0dGluZ0xldmVsIiwiX2Rpc3BhdGNoZXIiLCJfYWN0aW9ucyIsIlBsYXRmb3JtU2V0dGluZ3NIYW5kbGVyIiwiU2V0dGluZ3NIYW5kbGVyIiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsInBheWxvYWQiLCJhY3Rpb24iLCJBY3Rpb24iLCJQbGF0Zm9ybVNldCIsInN0b3JlIiwiT2JqZWN0IiwiZW50cmllcyIsIlNFVFRJTkdTIiwiZm9yRWFjaCIsImtleSIsInNldHRpbmciLCJzdXBwb3J0ZWRMZXZlbHMiLCJpbmNsdWRlcyIsIlNldHRpbmdMZXZlbCIsIlBMQVRGT1JNIiwicGxhdGZvcm0iLCJzdXBwb3J0c1NldHRpbmciLCJnZXRTZXR0aW5nVmFsdWUiLCJ0aGVuIiwidmFsdWUiLCJkZWZhdWx0RGlzcGF0Y2hlciIsInJlZ2lzdGVyIiwib25BY3Rpb24iLCJjYW5TZXRWYWx1ZSIsInNldHRpbmdOYW1lIiwicm9vbUlkIiwiUGxhdGZvcm1QZWciLCJnZXQiLCJnZXRWYWx1ZSIsInNldFZhbHVlIiwibmV3VmFsdWUiLCJzZXRTZXR0aW5nVmFsdWUiLCJpc1N1cHBvcnRlZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2V0dGluZ3MvaGFuZGxlcnMvUGxhdGZvcm1TZXR0aW5nc0hhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFNldHRpbmdzSGFuZGxlciBmcm9tIFwiLi9TZXR0aW5nc0hhbmRsZXJcIjtcbmltcG9ydCBQbGF0Zm9ybVBlZyBmcm9tIFwiLi4vLi4vUGxhdGZvcm1QZWdcIjtcbmltcG9ydCB7IFNFVFRJTkdTIH0gZnJvbSBcIi4uL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgZGVmYXVsdERpc3BhdGNoZXIgZnJvbSBcIi4uLy4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgQWN0aW9uUGF5bG9hZCB9IGZyb20gXCIuLi8uLi9kaXNwYXRjaGVyL3BheWxvYWRzXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5cbi8qKlxuICogR2V0cyBhbmQgc2V0cyBzZXR0aW5ncyBhdCB0aGUgXCJwbGF0Zm9ybVwiIGxldmVsIGZvciB0aGUgY3VycmVudCBkZXZpY2UuXG4gKiBUaGlzIGhhbmRsZXIgZG9lcyBub3QgbWFrZSB1c2Ugb2YgdGhlIHJvb21JZCBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYXRmb3JtU2V0dGluZ3NIYW5kbGVyIGV4dGVuZHMgU2V0dGluZ3NIYW5kbGVyIHtcbiAgICBwcml2YXRlIHN0b3JlOiB7IFtzZXR0aW5nTmFtZTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBkZWZhdWx0RGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm9uQWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQWN0aW9uID0gKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQuYWN0aW9uID09PSBBY3Rpb24uUGxhdGZvcm1TZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSB7fTtcbiAgICAgICAgICAgIC8vIExvYWQgc2V0dGluZyB2YWx1ZXMgYXMgdGhleSBhcmUgYXN5bmMgYW5kIGBnZXRWYWx1ZWAgbXVzdCBiZSBzeW5jaHJvbm91c1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoU0VUVElOR1MpLmZvckVhY2goKFtrZXksIHNldHRpbmddKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuc3VwcG9ydGVkTGV2ZWxzPy5pbmNsdWRlcyhTZXR0aW5nTGV2ZWwuUExBVEZPUk0pICYmIHBheWxvYWQucGxhdGZvcm0uc3VwcG9ydHNTZXR0aW5nKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5wbGF0Zm9ybS5nZXRTZXR0aW5nVmFsdWUoa2V5KS50aGVuKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHVibGljIGNhblNldFZhbHVlKHNldHRpbmdOYW1lOiBzdHJpbmcsIHJvb21JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBQbGF0Zm9ybVBlZy5nZXQoKT8uc3VwcG9ydHNTZXR0aW5nKHNldHRpbmdOYW1lKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUoc2V0dGluZ05hbWU6IHN0cmluZywgcm9vbUlkOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVtzZXR0aW5nTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFZhbHVlKHNldHRpbmdOYW1lOiBzdHJpbmcsIHJvb21JZDogc3RyaW5nLCBuZXdWYWx1ZTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RvcmVbc2V0dGluZ05hbWVdID0gbmV3VmFsdWU7IC8vIGtlZXAgY2FjaGUgdXAgdG8gZGF0ZSBmb3Igc3luY2hyb25vdXMgYWNjZXNzXG4gICAgICAgIGF3YWl0IFBsYXRmb3JtUGVnLmdldCgpPy5zZXRTZXR0aW5nVmFsdWUoc2V0dGluZ05hbWUsIG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBQbGF0Zm9ybVBlZy5nZXQoKT8uc3VwcG9ydHNTZXR0aW5nKCkgPz8gZmFsc2U7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLE1BQU1NLHVCQUF1QixTQUFTQyx3QkFBZSxDQUFDO0VBRzFEQyxXQUFXQSxDQUFBLEVBQUc7SUFDakIsS0FBSyxDQUFDLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLGlCQUhvQyxDQUFDLENBQUM7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBLG9CQVE5QkMsT0FBc0IsSUFBVztNQUNqRCxJQUFJQSxPQUFPLENBQUNDLE1BQU0sS0FBS0MsZUFBTSxDQUFDQyxXQUFXLEVBQUU7UUFDdkMsSUFBSSxDQUFDQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2Y7UUFDQUMsTUFBTSxDQUFDQyxPQUFPLENBQUNDLGtCQUFRLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxPQUFPLENBQUMsS0FBSztVQUNqRCxJQUFJQSxPQUFPLENBQUNDLGVBQWUsRUFBRUMsUUFBUSxDQUFDQywwQkFBWSxDQUFDQyxRQUFRLENBQUMsSUFBSWQsT0FBTyxDQUFDZSxRQUFRLENBQUNDLGVBQWUsQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7WUFDbkdULE9BQU8sQ0FBQ2UsUUFBUSxDQUFDRSxlQUFlLENBQUNSLEdBQUcsQ0FBQyxDQUFDUyxJQUFJLENBQUVDLEtBQVUsSUFBSztjQUN2RCxJQUFJLENBQUNmLEtBQUssQ0FBQ0ssR0FBRyxDQUFDLEdBQUdVLEtBQUs7WUFDM0IsQ0FBQyxDQUFDO1VBQ047UUFDSixDQUFDLENBQUM7TUFDTjtJQUNKLENBQUM7SUFmR0MsbUJBQWlCLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUNDLFFBQVEsQ0FBQztFQUM3QztFQWdCT0MsV0FBV0EsQ0FBQ0MsV0FBbUIsRUFBRUMsTUFBYyxFQUFXO0lBQzdELE9BQU9DLG9CQUFXLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVYLGVBQWUsQ0FBQ1EsV0FBVyxDQUFDLElBQUksS0FBSztFQUNuRTtFQUVPSSxRQUFRQSxDQUFDSixXQUFtQixFQUFFQyxNQUFjLEVBQU87SUFDdEQsT0FBTyxJQUFJLENBQUNyQixLQUFLLENBQUNvQixXQUFXLENBQUM7RUFDbEM7RUFFQSxNQUFhSyxRQUFRQSxDQUFDTCxXQUFtQixFQUFFQyxNQUFjLEVBQUVLLFFBQWEsRUFBaUI7SUFDckYsSUFBSSxDQUFDMUIsS0FBSyxDQUFDb0IsV0FBVyxDQUFDLEdBQUdNLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLE1BQU1KLG9CQUFXLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVJLGVBQWUsQ0FBQ1AsV0FBVyxFQUFFTSxRQUFRLENBQUM7RUFDbkU7RUFFT0UsV0FBV0EsQ0FBQSxFQUFZO0lBQzFCLE9BQU9OLG9CQUFXLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVYLGVBQWUsQ0FBQyxDQUFDLElBQUksS0FBSztFQUN4RDtBQUNKO0FBQUNpQixPQUFBLENBQUFsQyxPQUFBLEdBQUFKLHVCQUFBIiwiaWdub3JlTGlzdCI6W119