Commit graph

44 commits

Author SHA1 Message Date
Jorik Schellekens
132a753deb Lint getDefaultValue 2020-04-28 15:55:26 +01:00
Jorik Schellekens
9ca843fdcb
Correct return type in docs
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2020-04-28 14:27:18 +01:00
Jorik Schellekens
61f2e19d95 Basic font settings.
Include a default value getter in the store in order to make the
default value easy to work with.
2020-04-23 10:45:47 +01:00
Michael Telatynski
d585dbab02 Merge branches 'develop' and 't3chguy/s1' of https://github.com/matrix-org/matrix-react-sdk into t3chguy/s1 2020-02-04 15:48:04 +00:00
Michael Telatynski
e23a3e98be Only enumerate settings handlers which are supported currently 2020-02-04 15:27:38 +00:00
Michael Telatynski
f6c7df8c69 Keep date in Watcher IDs 2020-02-04 11:14:49 +00:00
Michael Telatynski
a8f7e381eb SettingsStore, use a counter instead of wall clock for watcher ids 2020-02-04 10:41:48 +00:00
Travis Ralston
2a1407a531 Add more logging to settings watchers
To try and track leaks versus spam.

Fixes https://github.com/vector-im/riot-web/issues/12094 (it's not leaking, probably)
2020-01-27 15:36:12 -07:00
Travis Ralston
93673eff12 Use a global WatchManager for settings
Fixes https://github.com/vector-im/riot-web/issues/8936

Watchers are now managed by the SettingsStore itself through a global/default watch manager. As per the included documentation, the watch manager dispatches updates to callbacks which are redirected by the SettingsStore for consumer safety.
2019-02-26 12:52:59 -07:00
Travis Ralston
7ea4008daa Implement support for watching for changes in settings
This implements a dream of one day being able to listen for changes in a settings to react to them, regardless of which device actually changed the setting. The use case for this kind of thing is extremely limited, but when it is needed it should be more than powerful enough.
2019-02-22 17:09:07 -07:00
Travis Ralston
e1bc1eee43 Appease the linter 2019-01-25 09:30:13 -07:00
Travis Ralston
d136c33a87 Invert setting values in a common place 2019-01-25 09:04:56 -07:00
Travis Ralston
cb6f415a05 Be more positive with setting labels
Fixes https://github.com/vector-im/riot-web/issues/6435

This is done through an on-the-fly inverter for the settings. All the settings changed are boolean values, so this should be more than safe to just let happen throughout the SettingsStore. Typically a change like this would be done in the individual handlers (similar to how setting names are remapped to different properties or even different storage locations on the fly), however doing that for this many settings would be a huge nightmare and involve changing *all* the layers. By putting a global "invert this" flag on the setting, we can get away with doing the inversion as the last possible step during a read (or write).

To speed up calculations of the default values, we cache all the inverted values into a lookup table similar to how we represent the defaults already. Without this, the DefaultHandler would need to iterate the setting list and invert the values, slowing things down over time. We invert the value up front so we can keep the generic inversion logic without checking the level ahead of time. It is fully intended that a default value represents the new setting name, not the legacy name.

This commit also includes a debugger for settings because it was hard to visualize what the SettingsStore was doing during development. Some added information is included as it may be helpful for when someone has a problem with their settings and we need to debug it. Typically the debugger would be run in conjunction with `mxSendRageshake`: `mxSettingsStore.debugSetting('showJoinLeaves') && mxSendRageshake('Debugging showJoinLeaves setting')`.
2019-01-24 20:57:40 -07:00
Aaron Raimist
49ce4ef117
eslint --fix src/
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-26 22:50:38 -05:00
Bruno Windels
08f322753d explain exception 2018-08-13 16:53:16 +02:00
Bruno Windels
3e9d1342e8 fix lint 2018-08-13 16:51:37 +02:00
Bruno Windels
28292c3388 implement PR feedback, move LL dialog to UserSettings 2018-08-13 11:14:30 +02:00
Bruno Windels
308a6b419e allow a setting controller to validate and revert a change (asynchronously) 2018-08-09 16:56:02 +02:00
Travis Ralston
2815c576c1 Ignore the default value when calculating if notifications are enabled
This is to make the "Enable desktop notifications" checkbox accurately reflect the user's preference. The device-level setting is still respected. 

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-12-25 13:29:30 -07:00
Travis Ralston
f141ee1944 Use the correct level order when getting arbitrary settings
This shouldn't currently be causing problems, but will in teh future. The bug can be exposed by having a setting where the level order is completely reversed, therefore causing LEVEL_ORDER[0] to actually be the most generic, not the most specific. Instead, we'll pull in the setting's level order and fallback to LEVEL_ORDER, therefore requesting the most specific value.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-15 19:24:32 -07:00
Travis Ralston
022e40a127 Use SettingsStore for default theme
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-15 19:04:49 -07:00
Travis Ralston
f7da5836e1 Make blacklistUnverifiedDevices override the level order
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-08 17:41:32 -07:00
Travis Ralston
781b94c8f4 Appease the linter
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-05 15:37:06 -07:00
Travis Ralston
f0000f7400 Update documentation
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-05 14:33:40 -07:00
Travis Ralston
e31c89d360 Make the controller work for notifications
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 22:28:35 -07:00
Travis Ralston
7ce4316cc8 Initial support for notification settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 21:47:18 -07:00
Travis Ralston
8351ec7e73 Local echo on all setting levels
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 20:32:00 -07:00
Travis Ralston
c7eee36990 Fix lanugage detection
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 16:38:26 -06:00
Travis Ralston
4f1ad974fc Delay URL preview saving until the save button is pressed
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 16:32:13 -06:00
Travis Ralston
a8169a682c Throw errors if the setting isn't known
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-04 15:46:15 -06:00
Travis Ralston
8282534f87 Add SettingsLevel enum; Move settings to own file.
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-11-03 23:19:45 -06:00
Travis Ralston
6f8523081b Some documentation
Far from complete, and probably needs a bit of work, but it's a start.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-30 21:09:24 -06:00
Travis Ralston
9c846e4dd9 Fix URL preview options
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-30 19:49:44 -06:00
Travis Ralston
786bd87fec Support URL previews (with bugs)
Known issues at this point:
* The room-level setting accepts the current user's default, which is wrong
* The checkboxes on RoomSettings are not independent
* The checkboxes in RoomSettings need some layout fixes

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 21:48:29 -06:00
Travis Ralston
9fdc1be7bd Make getLevelAt() return more generic responses
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 20:44:00 -06:00
Travis Ralston
b5d5c81f32 Add a new component to back various settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 20:43:27 -06:00
Travis Ralston
52f227cb3b Drop the idea of "config" being automatically supported
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 17:08:39 -06:00
Travis Ralston
0d3f0eaf98 Convert local settings to granular settings
This breaks language selection.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 16:53:00 -06:00
Travis Ralston
e8acb0e102 Use getValueAt()
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 16:02:51 -06:00
Travis Ralston
ae10a11ac4 Convert synced settings to granular settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 01:43:52 -06:00
Travis Ralston
bf815f4be9 Support labs features
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-28 20:21:50 -06:00
Travis Ralston
7dda5e9196 Appease the linter round 1
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-28 19:53:12 -06:00
Travis Ralston
23d159e21c Make reading settings synchronous
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-28 19:45:48 -06:00
Travis Ralston
989bdcf5fb Rebuild SettingsStore to be better supported
This does away with the room- and account-style settings, and just replaces them with `supportedLevels`. The handlers have also been moved out to be in better support of the other options, like SdkConfig and per-room-per-device.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-28 19:13:06 -06:00