UNPKG

matrix-react-sdk

Version:
133 lines (104 loc) 14.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.LabsSettingToggle = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _languageHandler = require("../../../../../languageHandler"); var _propTypes = _interopRequireDefault(require("prop-types")); var _SettingsStore = _interopRequireDefault(require("../../../../../settings/SettingsStore")); var _LabelledToggleSwitch = _interopRequireDefault(require("../../../elements/LabelledToggleSwitch")); var sdk = _interopRequireWildcard(require("../../../../../index")); var _SettingLevel = require("../../../../../settings/SettingLevel"); var _replaceableComponent = require("../../../../../utils/replaceableComponent"); var _SdkConfig = _interopRequireDefault(require("../../../../../SdkConfig")); var _BetaCard = _interopRequireDefault(require("../../../beta/BetaCard")); var _dec, _class; class LabsSettingToggle extends _react.default.Component { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "_onChange", async checked => { await _SettingsStore.default.setValue(this.props.featureId, null, _SettingLevel.SettingLevel.DEVICE, checked); this.forceUpdate(); }); } render() { const label = _SettingsStore.default.getDisplayName(this.props.featureId); const value = _SettingsStore.default.getValue(this.props.featureId); const canChange = _SettingsStore.default.canSetValue(this.props.featureId, null, _SettingLevel.SettingLevel.DEVICE); return /*#__PURE__*/_react.default.createElement(_LabelledToggleSwitch.default, { value: value, label: label, onChange: this._onChange, disabled: !canChange }); } } exports.LabsSettingToggle = LabsSettingToggle; (0, _defineProperty2.default)(LabsSettingToggle, "propTypes", { featureId: _propTypes.default.string.isRequired }); let LabsUserSettingsTab = (_dec = (0, _replaceableComponent.replaceableComponent)("views.settings.tabs.user.LabsUserSettingsTab"), _dec(_class = class LabsUserSettingsTab extends _react.default.Component { constructor() { super(); } render() { const features = _SettingsStore.default.getFeatureSettingNames(); const [labs, betas] = features.reduce((arr, f) => { arr[_SettingsStore.default.getBetaInfo(f) ? 1 : 0].push(f); return arr; }, [[], []]); let betaSection; if (betas.length) { betaSection = /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsTab_section" }, betas.map(f => /*#__PURE__*/_react.default.createElement(_BetaCard.default, { key: f, featureId: f }))); } let labsSection; if (_SdkConfig.default.get()['showLabsSettings']) { const SettingsFlag = sdk.getComponent("views.elements.SettingsFlag"); const flags = labs.map(f => /*#__PURE__*/_react.default.createElement(LabsSettingToggle, { featureId: f, key: f })); labsSection = /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsTab_section" }, flags, /*#__PURE__*/_react.default.createElement(SettingsFlag, { name: "enableWidgetScreenshots", level: _SettingLevel.SettingLevel.ACCOUNT }), /*#__PURE__*/_react.default.createElement(SettingsFlag, { name: "showHiddenEventsInTimeline", level: _SettingLevel.SettingLevel.DEVICE }), /*#__PURE__*/_react.default.createElement(SettingsFlag, { name: "lowBandwidth", level: _SettingLevel.SettingLevel.DEVICE }), /*#__PURE__*/_react.default.createElement(SettingsFlag, { name: "advancedRoomListLogging", level: _SettingLevel.SettingLevel.DEVICE })); } return /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsTab mx_LabsUserSettingsTab" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsTab_heading" }, (0, _languageHandler._t)("Labs")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsTab_subsectionText" }, (0, _languageHandler._t)('Feeling experimental? Labs are the best way to get things early, ' + 'test out new features and help shape them before they actually launch. ' + '<a>Learn more</a>.', {}, { 'a': sub => { return /*#__PURE__*/_react.default.createElement("a", { href: "https://github.com/vector-im/element-web/blob/develop/docs/labs.md", rel: "noreferrer noopener", target: "_blank" }, sub); } })), betaSection, labsSection); } }) || _class); exports.default = LabsUserSettingsTab; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL3RhYnMvdXNlci9MYWJzVXNlclNldHRpbmdzVGFiLmpzIl0sIm5hbWVzIjpbIkxhYnNTZXR0aW5nVG9nZ2xlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjaGVja2VkIiwiU2V0dGluZ3NTdG9yZSIsInNldFZhbHVlIiwicHJvcHMiLCJmZWF0dXJlSWQiLCJTZXR0aW5nTGV2ZWwiLCJERVZJQ0UiLCJmb3JjZVVwZGF0ZSIsInJlbmRlciIsImxhYmVsIiwiZ2V0RGlzcGxheU5hbWUiLCJ2YWx1ZSIsImdldFZhbHVlIiwiY2FuQ2hhbmdlIiwiY2FuU2V0VmFsdWUiLCJfb25DaGFuZ2UiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiTGFic1VzZXJTZXR0aW5nc1RhYiIsImNvbnN0cnVjdG9yIiwiZmVhdHVyZXMiLCJnZXRGZWF0dXJlU2V0dGluZ05hbWVzIiwibGFicyIsImJldGFzIiwicmVkdWNlIiwiYXJyIiwiZiIsImdldEJldGFJbmZvIiwicHVzaCIsImJldGFTZWN0aW9uIiwibGVuZ3RoIiwibWFwIiwibGFic1NlY3Rpb24iLCJTZGtDb25maWciLCJnZXQiLCJTZXR0aW5nc0ZsYWciLCJzZGsiLCJnZXRDb21wb25lbnQiLCJmbGFncyIsIkFDQ09VTlQiLCJzdWIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFTyxNQUFNQSxpQkFBTixTQUFnQ0MsZUFBTUMsU0FBdEMsQ0FBZ0Q7QUFBQTtBQUFBO0FBQUEscURBS3ZDLE1BQU9DLE9BQVAsSUFBbUI7QUFDM0IsWUFBTUMsdUJBQWNDLFFBQWQsQ0FBdUIsS0FBS0MsS0FBTCxDQUFXQyxTQUFsQyxFQUE2QyxJQUE3QyxFQUFtREMsMkJBQWFDLE1BQWhFLEVBQXdFTixPQUF4RSxDQUFOO0FB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LFFBQUEsS0FBSyxFQUFFRCwyQkFBYUM7QUFBakUsUUFMVSxDQUFkO0FBT0g7O0FBRUQsd0JBQ0k7QUFBSyxNQUFBLFNBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZixPQUF5Qyx5QkFBRyxNQUFILENBQXpDLENBREosZUFFSTtBQUFLLE1BQUEsU0FBUyxFQUFDO0FBQWYsT0FFUSx5QkFBRyxzRUFDQyx5RUFERCxHQUVDLG9CQUZKLEVBRTBCLEVBRjFCLEVBRThCO0FBQzFCLFdBQU1tQyxHQUFELElBQVM7QUFDViw0QkFBTztBQUFHLFVBQUEsSUFBSSxFQUFDLG9FQUFSO0FBQ0gsVUFBQSxHQUFHLEVBQUMscUJBREQ7QUFDdUIsVUFBQSxNQUFNLEVBQUM7QUFEOUIsV0FDd0NBLEdBRHhDLENBQVA7QUFFSDtBQUp5QixLQUY5QixDQUZSLENBRkosRUFjTVgsV0FkTixFQWVNRyxXQWZOLENBREo7QUFtQkg7O0FBcEQ0RCxDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE5IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7X3R9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgTGFiZWxsZWRUb2dnbGVTd2l0Y2ggZnJvbSBcIi4uLy4uLy4uL2VsZW1lbnRzL0xhYmVsbGVkVG9nZ2xlU3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBzZGsgZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2luZGV4XCI7XG5pbXBvcnQge1NldHRpbmdMZXZlbH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdMZXZlbFwiO1xuaW1wb3J0IHtyZXBsYWNlYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JlcGxhY2VhYmxlQ29tcG9uZW50XCI7XG5pbXBvcnQgU2RrQ29uZmlnIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9TZGtDb25maWdcIjtcbmltcG9ydCBCZXRhQ2FyZCBmcm9tIFwiLi4vLi4vLi4vYmV0YS9CZXRhQ2FyZFwiO1xuXG5leHBvcnQgY2xhc3MgTGFic1NldHRpbmdUb2dnbGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIGZlYXR1cmVJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH07XG5cbiAgICBfb25DaGFuZ2UgPSBhc3luYyAoY2hlY2tlZCkgPT4ge1xuICAgICAgICBhd2FpdCBTZXR0aW5nc1N0b3JlLnNldFZhbHVlKHRoaXMucHJvcHMuZmVhdHVyZUlkLCBudWxsLCBTZXR0aW5nTGV2ZWwuREVWSUNFLCBjaGVja2VkKTtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gU2V0dGluZ3NTdG9yZS5nZXREaXNwbGF5TmFtZSh0aGlzLnByb3BzLmZlYXR1cmVJZCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZSh0aGlzLnByb3BzLmZlYXR1cmVJZCk7XG4gICAgICAgIGNvbnN0IGNhbkNoYW5nZSA9IFNldHRpbmdzU3RvcmUuY2FuU2V0VmFsdWUodGhpcy5wcm9wcy5mZWF0dXJlSWQsIG51bGwsIFNldHRpbmdMZXZlbC5ERVZJQ0UpO1xuICAgICAgICByZXR1cm4gPExhYmVsbGVkVG9nZ2xlU3dpdGNoIHZhbHVlPXt2YWx1ZX0gbGFiZWw9e2xhYmVsfSBvbkNoYW5nZT17dGhpcy5fb25DaGFuZ2V9IGRpc2FibGVkPXshY2FuQ2hhbmdlfSAvPjtcbiAgICB9XG59XG5cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLnNldHRpbmdzLnRhYnMudXNlci5MYWJzVXNlclNldHRpbmdzVGFiXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYWJzVXNlclNldHRpbmdzVGFiIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gU2V0dGluZ3NTdG9yZS5nZXRGZWF0dXJlU2V0dGluZ05hbWVzKCk7XG4gICAgICAgIGNvbnN0IFtsYWJzLCBiZXRhc10gPSBmZWF0dXJlcy5yZWR1Y2UoKGFyciwgZikgPT4ge1xuICAgICAgICAgICAgYXJyW1NldHRpbmdzU3RvcmUuZ2V0QmV0YUluZm8oZikgPyAxIDogMF0ucHVzaChmKTtcbiAgICAgICAgICAgIHJldHVybiBhcnI7XG4gICAgICAgIH0sIFtbXSwgW11dKTtcblxuICAgICAgICBsZXQgYmV0YVNlY3Rpb247XG4gICAgICAgIGlmIChiZXRhcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGJldGFTZWN0aW9uID0gPGRpdiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc1RhYl9zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgeyBiZXRhcy5tYXAoZiA9PiA8QmV0YUNhcmQga2V5PXtmfSBmZWF0dXJlSWQ9e2Z9IC8+ICkgfVxuICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhYnNTZWN0aW9uO1xuICAgICAgICBpZiAoU2RrQ29uZmlnLmdldCgpWydzaG93TGFic1NldHRpbmdzJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IFNldHRpbmdzRmxhZyA9IHNkay5nZXRDb21wb25lbnQoXCJ2aWV3cy5lbGVtZW50cy5TZXR0aW5nc0ZsYWdcIik7XG4gICAgICAgICAgICBjb25zdCBmbGFncyA9IGxhYnMubWFwKGYgPT4gPExhYnNTZXR0aW5nVG9nZ2xlIGZlYXR1cmVJZD17Zn0ga2V5PXtmfSAvPik7XG5cbiAgICAgICAgICAgIGxhYnNTZWN0aW9uID0gPGRpdiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc1RhYl9zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAge2ZsYWdzfVxuICAgICAgICAgICAgICAgIDxTZXR0aW5nc0ZsYWcgbmFtZT1cImVuYWJsZVdpZGdldFNjcmVlbnNob3RzXCIgbGV2ZWw9e1NldHRpbmdMZXZlbC5BQ0NPVU5UfSAvPlxuICAgICAgICAgICAgICAgIDxTZXR0aW5nc0ZsYWcgbmFtZT1cInNob3dIaWRkZW5FdmVudHNJblRpbWVsaW5lXCIgbGV2ZWw9e1NldHRpbmdMZXZlbC5ERVZJQ0V9IC8+XG4gICAgICAgICAgICAgICAgPFNldHRpbmdzRmxhZyBuYW1lPVwibG93QmFuZHdpZHRoXCIgbGV2ZWw9e1NldHRpbmdMZXZlbC5ERVZJQ0V9IC8+XG4gICAgICAgICAgICAgICAgPFNldHRpbmdzRmxhZyBuYW1lPVwiYWR2YW5jZWRSb29tTGlzdExvZ2dpbmdcIiBsZXZlbD17U2V0dGluZ0xldmVsLkRFVklDRX0gLz5cbiAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1NldHRpbmdzVGFiIG14X0xhYnNVc2VyU2V0dGluZ3NUYWJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1NldHRpbmdzVGFiX2hlYWRpbmdcIj57X3QoXCJMYWJzXCIpfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdteF9TZXR0aW5nc1RhYl9zdWJzZWN0aW9uVGV4dCc+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90KCdGZWVsaW5nIGV4cGVyaW1lbnRhbD8gTGFicyBhcmUgdGhlIGJlc3Qgd2F5IHRvIGdldCB0aGluZ3MgZWFybHksICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG91dCBuZXcgZmVhdHVyZXMgYW5kIGhlbHAgc2hhcGUgdGhlbSBiZWZvcmUgdGhleSBhY3R1YWxseSBsYXVuY2guICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YT5MZWFybiBtb3JlPC9hPi4nLCB7fSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhJzogKHN1YikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS92ZWN0b3ItaW0vZWxlbWVudC13ZWIvYmxvYi9kZXZlbG9wL2RvY3MvbGFicy5tZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9J25vcmVmZXJyZXIgbm9vcGVuZXInIHRhcmdldD0nX2JsYW5rJz57c3VifTwvYT47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7IGJldGFTZWN0aW9uIH1cbiAgICAgICAgICAgICAgICB7IGxhYnNTZWN0aW9uIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==