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