UNPKG

matrix-react-sdk

Version:
73 lines (68 loc) 9.77 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useSettingValueAt = exports.useSettingValue = exports.useFeatureEnabled = void 0; var _react = require("react"); var _SettingsStore = _interopRequireDefault(require("../settings/SettingsStore")); /* Copyright 2024 New Vector Ltd. Copyright 2020 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. */ // Hook to fetch the value of a setting and dynamically update when it changes const useSettingValue = (settingName, roomId = null, excludeDefault = false) => { const [value, setValue] = (0, _react.useState)(_SettingsStore.default.getValue(settingName, roomId, excludeDefault)); (0, _react.useEffect)(() => { const ref = _SettingsStore.default.watchSetting(settingName, roomId, () => { setValue(_SettingsStore.default.getValue(settingName, roomId, excludeDefault)); }); // clean-up return () => { _SettingsStore.default.unwatchSetting(ref); }; }, [settingName, roomId, excludeDefault]); return value; }; /** * Hook to fetch the value of a setting at a specific level and dynamically update when it changes * @see SettingsStore.getValueAt * @param level * @param settingName * @param roomId * @param explicit * @param excludeDefault */ exports.useSettingValue = useSettingValue; const useSettingValueAt = (level, settingName, roomId = null, explicit = false, excludeDefault = false) => { const [value, setValue] = (0, _react.useState)(_SettingsStore.default.getValueAt(level, settingName, roomId, explicit, excludeDefault)); (0, _react.useEffect)(() => { const ref = _SettingsStore.default.watchSetting(settingName, roomId, () => { setValue(_SettingsStore.default.getValueAt(level, settingName, roomId, explicit, excludeDefault)); }); // clean-up return () => { _SettingsStore.default.unwatchSetting(ref); }; }, [level, settingName, roomId, explicit, excludeDefault]); return value; }; // Hook to fetch whether a feature is enabled and dynamically update when that changes exports.useSettingValueAt = useSettingValueAt; const useFeatureEnabled = (featureName, roomId = null) => { const [enabled, setEnabled] = (0, _react.useState)(_SettingsStore.default.getValue(featureName, roomId)); (0, _react.useEffect)(() => { const ref = _SettingsStore.default.watchSetting(featureName, roomId, () => { setEnabled(_SettingsStore.default.getValue(featureName, roomId)); }); // clean-up return () => { _SettingsStore.default.unwatchSetting(ref); }; }, [featureName, roomId]); return enabled; }; exports.useFeatureEnabled = useFeatureEnabled; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX1NldHRpbmdzU3RvcmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidXNlU2V0dGluZ1ZhbHVlIiwic2V0dGluZ05hbWUiLCJyb29tSWQiLCJleGNsdWRlRGVmYXVsdCIsInZhbHVlIiwic2V0VmFsdWUiLCJ1c2VTdGF0ZSIsIlNldHRpbmdzU3RvcmUiLCJnZXRWYWx1ZSIsInVzZUVmZmVjdCIsInJlZiIsIndhdGNoU2V0dGluZyIsInVud2F0Y2hTZXR0aW5nIiwiZXhwb3J0cyIsInVzZVNldHRpbmdWYWx1ZUF0IiwibGV2ZWwiLCJleHBsaWNpdCIsImdldFZhbHVlQXQiLCJ1c2VGZWF0dXJlRW5hYmxlZCIsImZlYXR1cmVOYW1lIiwiZW5hYmxlZCIsInNldEVuYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2V0dGluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuaW1wb3J0IHsgU2V0dGluZ0xldmVsIH0gZnJvbSBcIi4uL3NldHRpbmdzL1NldHRpbmdMZXZlbFwiO1xuXG4vLyBIb29rIHRvIGZldGNoIHRoZSB2YWx1ZSBvZiBhIHNldHRpbmcgYW5kIGR5bmFtaWNhbGx5IHVwZGF0ZSB3aGVuIGl0IGNoYW5nZXNcbmV4cG9ydCBjb25zdCB1c2VTZXR0aW5nVmFsdWUgPSA8VD4oc2V0dGluZ05hbWU6IHN0cmluZywgcm9vbUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZXhjbHVkZURlZmF1bHQgPSBmYWxzZSk6IFQgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZTxUPihzZXR0aW5nTmFtZSwgcm9vbUlkLCBleGNsdWRlRGVmYXVsdCkpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmID0gU2V0dGluZ3NTdG9yZS53YXRjaFNldHRpbmcoc2V0dGluZ05hbWUsIHJvb21JZCwgKCkgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUoU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZTxUPihzZXR0aW5nTmFtZSwgcm9vbUlkLCBleGNsdWRlRGVmYXVsdCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY2xlYW4tdXBcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIFNldHRpbmdzU3RvcmUudW53YXRjaFNldHRpbmcocmVmKTtcbiAgICAgICAgfTtcbiAgICB9LCBbc2V0dGluZ05hbWUsIHJvb21JZCwgZXhjbHVkZURlZmF1bHRdKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogSG9vayB0byBmZXRjaCB0aGUgdmFsdWUgb2YgYSBzZXR0aW5nIGF0IGEgc3BlY2lmaWMgbGV2ZWwgYW5kIGR5bmFtaWNhbGx5IHVwZGF0ZSB3aGVuIGl0IGNoYW5nZXNcbiAqIEBzZWUgU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZUF0XG4gKiBAcGFyYW0gbGV2ZWxcbiAqIEBwYXJhbSBzZXR0aW5nTmFtZVxuICogQHBhcmFtIHJvb21JZFxuICogQHBhcmFtIGV4cGxpY2l0XG4gKiBAcGFyYW0gZXhjbHVkZURlZmF1bHRcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNldHRpbmdWYWx1ZUF0ID0gPFQ+KFxuICAgIGxldmVsOiBTZXR0aW5nTGV2ZWwsXG4gICAgc2V0dGluZ05hbWU6IHN0cmluZyxcbiAgICByb29tSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGV4cGxpY2l0ID0gZmFsc2UsXG4gICAgZXhjbHVkZURlZmF1bHQgPSBmYWxzZSxcbik6IFQgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoXG4gICAgICAgIFNldHRpbmdzU3RvcmUuZ2V0VmFsdWVBdDxUPihsZXZlbCwgc2V0dGluZ05hbWUsIHJvb21JZCwgZXhwbGljaXQsIGV4Y2x1ZGVEZWZhdWx0KSxcbiAgICApO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmID0gU2V0dGluZ3NTdG9yZS53YXRjaFNldHRpbmcoc2V0dGluZ05hbWUsIHJvb21JZCwgKCkgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUoU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZUF0PFQ+KGxldmVsLCBzZXR0aW5nTmFtZSwgcm9vbUlkLCBleHBsaWNpdCwgZXhjbHVkZURlZmF1bHQpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNsZWFuLXVwXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBTZXR0aW5nc1N0b3JlLnVud2F0Y2hTZXR0aW5nKHJlZik7XG4gICAgICAgIH07XG4gICAgfSwgW2xldmVsLCBzZXR0aW5nTmFtZSwgcm9vbUlkLCBleHBsaWNpdCwgZXhjbHVkZURlZmF1bHRdKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIEhvb2sgdG8gZmV0Y2ggd2hldGhlciBhIGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgZHluYW1pY2FsbHkgdXBkYXRlIHdoZW4gdGhhdCBjaGFuZ2VzXG5leHBvcnQgY29uc3QgdXNlRmVhdHVyZUVuYWJsZWQgPSAoZmVhdHVyZU5hbWU6IHN0cmluZywgcm9vbUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtlbmFibGVkLCBzZXRFbmFibGVkXSA9IHVzZVN0YXRlKFNldHRpbmdzU3RvcmUuZ2V0VmFsdWU8Ym9vbGVhbj4oZmVhdHVyZU5hbWUsIHJvb21JZCkpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmID0gU2V0dGluZ3NTdG9yZS53YXRjaFNldHRpbmcoZmVhdHVyZU5hbWUsIHJvb21JZCwgKCkgPT4ge1xuICAgICAgICAgICAgc2V0RW5hYmxlZChTZXR0aW5nc1N0b3JlLmdldFZhbHVlKGZlYXR1cmVOYW1lLCByb29tSWQpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNsZWFuLXVwXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBTZXR0aW5nc1N0b3JlLnVud2F0Y2hTZXR0aW5nKHJlZik7XG4gICAgICAgIH07XG4gICAgfSwgW2ZlYXR1cmVOYW1lLCByb29tSWRdKTtcblxuICAgIHJldHVybiBlbmFibGVkO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQVZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQU9BO0FBQ08sTUFBTUcsZUFBZSxHQUFHQSxDQUFJQyxXQUFtQixFQUFFQyxNQUFxQixHQUFHLElBQUksRUFBRUMsY0FBYyxHQUFHLEtBQUssS0FBUTtFQUNoSCxNQUFNLENBQUNDLEtBQUssRUFBRUMsUUFBUSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFDQyxzQkFBYSxDQUFDQyxRQUFRLENBQUlQLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxjQUFjLENBQUMsQ0FBQztFQUVsRyxJQUFBTSxnQkFBUyxFQUFDLE1BQU07SUFDWixNQUFNQyxHQUFHLEdBQUdILHNCQUFhLENBQUNJLFlBQVksQ0FBQ1YsV0FBVyxFQUFFQyxNQUFNLEVBQUUsTUFBTTtNQUM5REcsUUFBUSxDQUFDRSxzQkFBYSxDQUFDQyxRQUFRLENBQUlQLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxjQUFjLENBQUMsQ0FBQztJQUM1RSxDQUFDLENBQUM7SUFDRjtJQUNBLE9BQU8sTUFBTTtNQUNUSSxzQkFBYSxDQUFDSyxjQUFjLENBQUNGLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0VBQ0wsQ0FBQyxFQUFFLENBQUNULFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxjQUFjLENBQUMsQ0FBQztFQUV6QyxPQUFPQyxLQUFLO0FBQ2hCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkFTLE9BQUEsQ0FBQWIsZUFBQSxHQUFBQSxlQUFBO0FBU08sTUFBTWMsaUJBQWlCLEdBQUdBLENBQzdCQyxLQUFtQixFQUNuQmQsV0FBbUIsRUFDbkJDLE1BQXFCLEdBQUcsSUFBSSxFQUM1QmMsUUFBUSxHQUFHLEtBQUssRUFDaEJiLGNBQWMsR0FBRyxLQUFLLEtBQ2xCO0VBQ0osTUFBTSxDQUFDQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFDOUJDLHNCQUFhLENBQUNVLFVBQVUsQ0FBSUYsS0FBSyxFQUFFZCxXQUFXLEVBQUVDLE1BQU0sRUFBRWMsUUFBUSxFQUFFYixjQUFjLENBQ3BGLENBQUM7RUFFRCxJQUFBTSxnQkFBUyxFQUFDLE1BQU07SUFDWixNQUFNQyxHQUFHLEdBQUdILHNCQUFhLENBQUNJLFlBQVksQ0FBQ1YsV0FBVyxFQUFFQyxNQUFNLEVBQUUsTUFBTTtNQUM5REcsUUFBUSxDQUFDRSxzQkFBYSxDQUFDVSxVQUFVLENBQUlGLEtBQUssRUFBRWQsV0FBVyxFQUFFQyxNQUFNLEVBQUVjLFFBQVEsRUFBRWIsY0FBYyxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDO0lBQ0Y7SUFDQSxPQUFPLE1BQU07TUFDVEksc0JBQWEsQ0FBQ0ssY0FBYyxDQUFDRixHQUFHLENBQUM7SUFDckMsQ0FBQztFQUNMLENBQUMsRUFBRSxDQUFDSyxLQUFLLEVBQUVkLFdBQVcsRUFBRUMsTUFBTSxFQUFFYyxRQUFRLEVBQUViLGNBQWMsQ0FBQyxDQUFDO0VBRTFELE9BQU9DLEtBQUs7QUFDaEIsQ0FBQzs7QUFFRDtBQUFBUyxPQUFBLENBQUFDLGlCQUFBLEdBQUFBLGlCQUFBO0FBQ08sTUFBTUksaUJBQWlCLEdBQUdBLENBQUNDLFdBQW1CLEVBQUVqQixNQUFxQixHQUFHLElBQUksS0FBYztFQUM3RixNQUFNLENBQUNrQixPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHLElBQUFmLGVBQVEsRUFBQ0Msc0JBQWEsQ0FBQ0MsUUFBUSxDQUFVVyxXQUFXLEVBQUVqQixNQUFNLENBQUMsQ0FBQztFQUU1RixJQUFBTyxnQkFBUyxFQUFDLE1BQU07SUFDWixNQUFNQyxHQUFHLEdBQUdILHNCQUFhLENBQUNJLFlBQVksQ0FBQ1EsV0FBVyxFQUFFakIsTUFBTSxFQUFFLE1BQU07TUFDOURtQixVQUFVLENBQUNkLHNCQUFhLENBQUNDLFFBQVEsQ0FBQ1csV0FBVyxFQUFFakIsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0lBQ0Y7SUFDQSxPQUFPLE1BQU07TUFDVEssc0JBQWEsQ0FBQ0ssY0FBYyxDQUFDRixHQUFHLENBQUM7SUFDckMsQ0FBQztFQUNMLENBQUMsRUFBRSxDQUFDUyxXQUFXLEVBQUVqQixNQUFNLENBQUMsQ0FBQztFQUV6QixPQUFPa0IsT0FBTztBQUNsQixDQUFDO0FBQUNQLE9BQUEsQ0FBQUssaUJBQUEsR0FBQUEsaUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=