Commit graph

319 commits

Author SHA1 Message Date
Michael Telatynski
6121420113
Merge branch 'develop' into t3chguy/remove_bluebird 2019-11-20 15:21:23 +00:00
David Baker
5a700b518a Get theme automatically from system setting
Uses CSS `prefers-color-scheme` to get the user's preferred colour
scheme. Also bundles up some theme logic into its own class.
2019-11-20 13:41:06 +00:00
Damir Jelić
44b212bc4c Merge branch 'poljar/seshat-pr' into develop 2019-11-20 13:33:03 +01:00
Damir Jelić
0631faf902 Settings: Fix the supportedLevels for event indexing feature. 2019-11-20 12:31:07 +01:00
Bruno Windels
43884923e8 merge the feature_user_info_panel flag into feature_dm_verification 2019-11-19 14:18:12 +01:00
Damir Jelić
f776bdcc8b EventIndex: Hide the feature behind a labs flag. 2019-11-19 14:05:00 +01:00
Travis Ralston
2f89f28496 Remove extraneous paranoia
The value is nullchecked later on.
2019-11-18 14:25:04 -07:00
Travis Ralston
8d25952dbb Add a bit more safety around breadcrumbs
Fixes https://github.com/vector-im/riot-web/issues/11420
2019-11-18 14:17:31 -07:00
J. Ryan Stinnett
b8c0a0fe72 Reload automatically when changing cross-signing flag 2019-11-18 16:06:00 +00:00
J. Ryan Stinnett
50cccd3212 Add cross-signing feature flag
Fixes https://github.com/vector-im/riot-web/issues/11407
2019-11-18 16:06:00 +00:00
Michael Telatynski
d4d51dc61f Rip out the remainder of Bluebird 2019-11-18 10:03:05 +00:00
Travis Ralston
6d0b388fa2
Merge branch 'develop' into travis/mjolnir 2019-11-12 10:00:01 -07:00
Bruno Windels
5c9e80a0ba add feature flag and send verification using DM from dialog if enabled 2019-11-07 19:54:56 +01:00
Travis Ralston
23383419e8 Add settings base for Mjolnir rules 2019-10-31 13:20:18 -06:00
Travis Ralston
9d0d1d3b36 Our code should probably compile... 2019-10-29 14:38:39 -06:00
Travis Ralston
5af6d979c2 Support a setting for allowed widgets
Hooking this setting up is left as a problem for a different issue.
2019-10-29 14:35:35 -06:00
Travis Ralston
28e0988325 Fix naming of integrationProvisioning 2019-10-29 14:26:35 -06:00
Travis Ralston
3b771f682d let -> const 2019-10-29 14:23:59 -06:00
Travis Ralston
dd8f26a3f6 Add integration manager provisioning setting
To be used later by a future implementation
2019-10-29 14:20:53 -06:00
Travis Ralston
8dec435e50 Bring breadcrumbs into new Riot config standard 2019-10-29 14:12:05 -06:00
Michael Telatynski
df02eb8e92 Add UserInfo panel (consolidation of MemberInfo & GroupMemberInfo) Labs
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-07 16:52:50 +01:00
Michael Telatynski
e200193b0a DRY and fix useCiderComposer being in both labs and preferences
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-04 10:15:00 +01:00
Travis Ralston
853c522467 Enable CIDER composer by default
Also convert the setting to a watched setting to apply in realtime.
2019-10-03 23:20:40 -06:00
Travis Ralston
b94c94db04
Merge pull request #3492 from matrix-org/travis/hide-images
Add an option to hide image previews
2019-10-02 12:46:45 -06:00
Bruno Windels
558f8daeeb support custom themes from setting
also move theme setting code from MatrixChat to own file.
2019-10-01 15:21:22 +02:00
Travis Ralston
59b29e4a7f Add an option to hide image previews
Applies to images, stickers, and URL previews.

Fixes https://github.com/vector-im/riot-web/issues/10735
2019-09-27 21:08:31 -06:00
Matthew Hodgson
832123524d make the lifetimes of the RM configurable 2019-09-17 17:34:30 +01:00
Travis Ralston
e29184ae1d Support secret per-room hidden read receipts 2019-09-06 13:02:18 -06:00
Travis Ralston
af35cdc2ea Support sending hidden read receipts
Fixes https://github.com/vector-im/riot-web/issues/2527
2019-09-05 20:30:19 -06:00
Travis Ralston
b3cda4b19a Support multiple integration managers behind a labs flag
Fixes https://github.com/vector-im/riot-web/issues/10622
Implements [MSC1957](https://github.com/matrix-org/matrix-doc/pull/1957)

Design is not final.
2019-08-23 09:12:40 -06:00
Bruno Windels
9c6953f176 lint 2019-08-22 14:11:04 +01:00
Bruno Windels
b395fad834 add feature flag, allowing to revert to old slate editor 2019-08-22 14:07:43 +01:00
J. Ryan Stinnett
67b830c48d Improve fallback ICE setting label 2019-08-15 15:05:25 +01:00
J. Ryan Stinnett
1c6312d999 Store ICE fallback permission in device setting
This stores the ICE server fallback permission in a device setting so it is
remembered across sessions.

Part of https://github.com/matrix-org/matrix-react-sdk/pull/3309
2019-08-15 15:04:23 +01:00
Michael Telatynski
7bdac85a2a Break themes out into a separate file
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-12 14:24:12 +01:00
Michael Telatynski
916af736ad Consolidate Themes into ThemeController. Remove hardcoded themes in view
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-11 03:43:34 +01:00
J. Ryan Stinnett
599c49613f Remove reactions feature flag
Fixes https://github.com/vector-im/riot-web/issues/10282
2019-07-17 17:00:36 +01:00
J. Ryan Stinnett
674f33917f Remove editing feature flag
Part of https://github.com/vector-im/riot-web/issues/10282
2019-07-17 16:56:15 +01:00
J. Ryan Stinnett
202f6fb94d Continue to next config level after device for features
This ensures we continue checking further config levels for the feature setting
if nothing is found when reading the device level. For example, this means the
feature setting's default value can be used.
2019-07-17 14:50:35 +01:00
J. Ryan Stinnett
3801f0b78e Enable reactions and edits by default
This enables reactions and edits by default, assuming you don't have any local
device settings that would disable them.

Fixes https://github.com/vector-im/riot-web/issues/10281
2019-07-17 14:50:35 +01:00
Travis Ralston
635b1ff612
Merge pull request #2928 from Half-Shot/hs/custom-notif-sounds
Custom notification sounds for rooms
2019-06-03 14:31:38 -06:00
Will Hunt
300095f50f Remove labs flag for custom notif sounds 2019-06-03 17:35:15 +01:00
Travis Ralston
7f0282a2e8 Convert breadcrumbs from labs to real setting
Fixes https://github.com/vector-im/riot-web/issues/9391
2019-06-03 00:15:33 -06:00
Will Hunt
96c20ea536 Add missing keys to notif sound setting 2019-05-31 11:40:23 +01:00
Will Hunt
9369e964fa Merge remote-tracking branch 'upstream/develop' into hs/custom-notif-sounds 2019-05-31 10:44:30 +01:00
Travis Ralston
0d47222132 Add LB setting to new user settings
Put under labs out of concern for https://github.com/vector-im/riot-meta/issues/66
2019-05-30 19:57:17 -06:00
Travis Ralston
d81804e0fe Merge branch 'develop' into matthew/low_bandwidth 2019-05-30 19:42:09 -06:00
J. Ryan Stinnett
45cdf880b1 Change setting style 2019-05-17 17:43:08 +01:00
J. Ryan Stinnett
3a405701a3 Debug: Show all events 2019-05-17 16:34:01 +01:00
Will Hunt
2994d99378
Merge branch 'develop' into hs/custom-notif-sounds 2019-05-15 16:09:55 +01:00
Will Hunt
277c4ab809
Merge branch 'develop' into hs/custom-notif-sounds 2019-05-14 21:07:03 +01:00
Bruno Windels
0b18ff52c5 pass feature flag to js-sdk 2019-05-14 15:43:10 +01:00
Bruno Windels
036cb02c0e add feature flag 2019-05-14 15:39:24 +01:00
Will Hunt
64a384477e Resolve issues 2019-05-12 17:14:21 +01:00
J. Ryan Stinnett
8903f65fcb Enable client-side aggregations for reactions
If reactions are enabled, we need to enable client-side aggregation in the
`MatrixClient` to access the data.
2019-05-10 17:19:27 +01:00
Will Hunt
efc93abb50
Merge branch 'develop' into hs/custom-notif-sounds 2019-05-07 20:04:29 +01:00
J. Ryan Stinnett
7f62cdf124 Add reactions feature flag 2019-04-30 17:51:18 +01:00
Will Hunt
020d210cb0 Use uk.half-shot.* 2019-04-23 16:23:58 +01:00
Will Hunt
9de8920869 Remove trailing space 2019-04-22 23:04:03 +01:00
Will Hunt
8258e93337 Use m.notification.sound 2019-04-21 18:03:54 +01:00
Will Hunt
0f2cd6ea73 Stick behind a feature flag 2019-04-21 18:01:26 +01:00
Will Hunt
776210c135 Use settings store 2019-04-19 22:31:51 +01:00
Travis Ralston
934ca6908f Remove breadcrumb scroll tolerances and use sensible defaults
Fixes https://github.com/vector-im/riot-web/issues/9394
Fixes https://github.com/vector-im/riot-web/issues/9400

Numbers chosen based on user feedback. The setting has also been removed because it isn't really needed anymore.
2019-04-11 11:07:31 -06:00
Travis Ralston
aa96fd27cc Add some tolerances to breadcrumb scrolling
See https://github.com/vector-im/riot-web/issues/9400
See https://github.com/vector-im/riot-web/issues/9394

Tolerances are defined as a device-only setting to give advanced users an option to override the values. No UI is exposed for this. 

The default values are picked for assumptions on comfort, however as people change the tolerances themselves the defaults may need to change.
2019-04-08 10:56:44 -06:00
Travis Ralston
e2edae3383 Merge branch 'develop' into travis/breadcrumbs/telemetry 2019-04-05 09:35:38 -06:00
Travis Ralston
44198ea97d Sync breadcrumb rooms through account data
Fixes https://github.com/vector-im/riot-web/issues/9315

Other clients would need to listen for and update im.vector.riot.breadcrumb_rooms in account data.
2019-04-04 15:06:03 -06:00
Travis Ralston
842e19280d Apply changes to breadcrumbs setting live 2019-04-01 11:49:58 -06:00
Travis Ralston
69fcebf045 Use allow/deny instead of whitelist/blacklist for terminology 2019-03-25 21:14:21 -06:00
Travis Ralston
2dcb40f1be Track OpenID automatic permissions by (widgetLocation, widgetUrl) 2019-03-23 23:25:31 -06:00
Travis Ralston
f045beafc3 Support whitelisting/blacklisting widgets for OpenID 2019-03-15 21:33:31 -06:00
Travis Ralston
2c2685a3ea
Merge pull request #2705 from matrix-org/travis/fix-monitored-settings
Use a global WatchManager for settings
2019-02-27 08:02:27 -07:00
Travis Ralston
ad374b3118 Try to clarify that "Show read receipts" is just for visibility
The setting does not apply to sending them, just seeing them.
2019-02-26 15:27:50 -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
3d152da822 Support custom tags in the new algorithm 2019-02-25 13:39:08 -07:00
Travis Ralston
b0cc69bca9 Add an option to sort the room list by recents first
Fixes https://github.com/vector-im/riot-web/issues/8892
2019-02-22 17:09:07 -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
9175655c16 Remove old pin unread options
They are not forced on, and do nothing.
2019-02-13 13:13:40 -07:00
David Baker
737b85c8f0
Merge pull request #2623 from matrix-org/dbkr/fix_force_turn_flag
Security: Force TURN setting was inverted
2019-02-13 15:24:14 +00:00
David Baker
26287067fc Security: Force TURN setting was inverted
In making the settings more positive, we flipped 'disable peer to
peer' but didn't change the caption, so the setting was inverted
from what it was labelled as.

Also, forcing p2p isn't the inverse of forcing turn.

Change the setting to be 'allow p2p' and the label to match.
2019-02-13 11:51:32 +00:00
J. Ryan Stinnett
b0d08b9a25 Rename dharma theme to light theme 2019-02-13 10:47:04 +00:00
J. Ryan Stinnett
19e94b9e32 Allow storing the theme settting again 2019-02-13 10:47:04 +00:00
J. Ryan Stinnett
df2f520d72 Fix up any unsupported themes when read from settings 2019-02-13 10:44:01 +00:00
J. Ryan Stinnett
215995de88 Resume reading default theme from config 2019-02-13 10:44:01 +00:00
Bruno Windels
b467bfdced mention it only shows up after refresh (actually rerender) 2019-02-12 12:49:22 +01:00
Bruno Windels
03c491416e put breadcrumbs behind feature flag 2019-02-12 11:41:24 +01:00
David Baker
043f1ab3f0 Remove key backup & sas from labs 2019-02-08 16:58:09 +00:00
Matthew Hodgson
ce24165e19 port over low_bandwidth mode to develop 2019-02-08 16:44:03 +00:00
Bruno Windels
3c5fb61350 Merge branch 'develop' into bwindels/customtags-featureflag 2019-02-08 12:12:43 +00:00
Bruno Windels
cf7e1f9d88 remove import as well 2019-02-07 18:47:08 +00:00
Bruno Windels
ac4ab11985 remove ll feature flag, it's time! 2019-02-07 18:24:07 +00:00
Bruno Windels
e8533beafb guard custom tags with feature flag 2019-02-07 18:07:30 +00:00
Travis Ralston
eac50aa800 Remove old user and room settings
This takes out the old user and room settings, replacing the paths with the new dialog editions. The labs setting has been removed in order to support this change.

In addition to removing the old components outright, some older components which were only used by the settings pages have been removed. The exception is the ColorSettings component as it has a high chance of sticking around in the future.

Styles that were shared by the settings components have been broken out to dedicated sections, making it easier to remove the old styles entirely.

Some stability testing of the app has been performed to ensure the app still works, however given the scope of this change there is a possibility of some broken functionality.
2019-02-04 13:40:21 -07:00
Travis Ralston
a1e3887a74
Merge branch 'experimental' into travis/settings/positive 2019-01-28 08:25:40 -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
David Baker
6a90625d36 Merge remote-tracking branch 'origin/experimental' into dbkr/sas 2019-01-23 17:32:18 +00:00
Travis Ralston
5ef9015133 Add labs flag for tabbed settings 2019-01-22 10:28:33 -07:00
David Baker
970880737e Merge remote-tracking branch 'origin/experimental' into dbkr/sas 2019-01-18 18:33:11 +00:00
Travis Ralston
7f6ce69c3e Merge branch 'experimental' into travis/develop2 2019-01-17 16:03:45 -07:00
Bruno Windels
8c30d05eb8 Revert "Merge pull request #2348 from matrix-org/bwindels/roomgridview-experimental"
This reverts commit ece5cb1fcc, reversing
changes made to 64a3d2521c.
2019-01-17 10:29:37 +01:00
David Baker
55889d5491 Change wording of 'invite anyway' setting
https://github.com/vector-im/riot-web/issues/7922
2019-01-16 15:07:30 +00:00
David Baker
1d2538a7bc First working version of SAS 2019-01-15 18:08:13 +00:00
J. Ryan Stinnett
632bbde598 Remove usused setting value from CustomStatusController 2019-01-15 10:54:29 -06:00
J. Ryan Stinnett
c76b273fae Update RoomTiles on custom status change 2019-01-15 10:54:29 -06:00
J. Ryan Stinnett
e08c70b820 Prune unsupported setting RoomSubList.showEmpty
The code reading this setting was previously removed in #2229.
2019-01-15 10:54:29 -06:00
Travis Ralston
177d9f245a
Merge pull request #2441 from matrix-org/develop
Merge develop -> experimental
2019-01-14 14:45:20 -07:00
Travis Ralston
a05c0f9214 Rephrase everything to be "invite anyways" rather than "retry"
Also handle profile errors better
2019-01-11 15:46:03 -07:00
Travis Ralston
5333114d7b Give a route for retrying invites for users which may not exist
Fixes https://github.com/vector-im/riot-web/issues/7922

This supports the current style of errors (M_NOT_FOUND) as well as the errors presented by MSC1797: https://github.com/matrix-org/matrix-doc/pull/1797
2019-01-10 21:43:21 -07:00
Erik Johnston
cbf9ff6aee Merge branch 'experimental' of github.com:matrix-org/matrix-react-sdk into erikj/state_counters 2019-01-10 16:56:47 +00:00
Bruno Windels
c2f6fc381c add feature flag for grid view 2019-01-07 16:13:35 +01:00
Erik Johnston
4c204e88be Add feature flag for counters 2019-01-07 13:52:13 +00:00
Travis Ralston
8017f0a4a1 Merge remote-tracking branch 'origin/experimental' into travis/develop-for-real 2019-01-03 16:00:23 -07:00
David Baker
f928be6f59 Revert "Merge pull request #2395 from matrix-org/dbkr/merge_develop_experimental"
This reverts commit ad47144355.
2019-01-03 15:37:03 -07:00
David Baker
7d161de35b Partial merge of develop to experimental
Does not include #2336 as the file has been moved out from underneath it:
will do this separately
2019-01-03 15:02:58 +00:00
Travis Ralston
04c9fff6ce Add a feature flag for custom status messages 2018-12-18 15:11:08 -07:00
Travis Ralston
c706135c6e
Force use of dharma theme 2018-12-16 12:49:41 -07:00
J. Ryan Stinnett
a92d2902c4 Add an in-room reminder to set up key recovery
This adds an in-room reminder above the message timeline to set up Secure
Message Recovery so that your keys will be backed up. If you try to ignore it,
an additional dialog is shown to confirm.

Fixes vector-im/riot-web#7783.

Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-12-07 14:13:02 -06:00
Bruno Windels
67e0030ccd Merge branch 'develop' into experimental 2018-11-26 13:10:29 +01:00
David Baker
8ccaf53d20 Merge remote-tracking branch 'origin/develop' into dbkr/e2e_backups 2018-11-20 18:08:39 +00:00
Bruno Windels
c19b593f5c Merge branch 'develop' into experimental 2018-11-06 15:28:20 +01:00
Travis Ralston
57b99893e5
Merge pull request #1936 from turt2live/travis/pinned-room-list
Add options to pin unread/mentioned rooms to the top of the room list
2018-11-01 08:04:12 -06:00
Bruno Windels
ba83166661 Merge branch 'develop' into experimental 2018-10-31 14:54:22 +01:00
David Baker
8ac62f8c12 Merge remote-tracking branch 'origin/develop' into dbkr/e2e_backups 2018-10-29 16:20:45 +00: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
2c039483c6 Merge branch 'develop' into experimental 2018-10-26 15:33:39 +02:00
Travis Ralston
9cdb527163
Merge branch 'develop' into travis/pinned-room-list 2018-10-25 10:57:08 -06:00
David Baker
b59b8b7fca Merge remote-tracking branch 'origin/develop' into dbkr/e2e_backups 2018-10-25 17:42:46 +01:00
Will Hunt
a5ae599dcb Add show developer tools option 2018-10-24 18:15:25 +01:00
Bruno Windels
7d0b8083b6 hardcode to to dharma to avoid weird mix 2018-10-22 16:33:46 +02:00
Travis Ralston
103ed71eb5 Merge branch 'develop' into travis/pinned-room-list 2018-10-12 14:09:52 -06:00
Bruno Windels
6ed0777c96 turn it on! 2018-10-11 15:55:21 +02:00
David Baker
292b1f09af WIP e2e key backups
Continues from Matthew's work: adds a feature flag & panel in
user settings to create a backup.

Can't restore a backup yet, nor even continue backing up to the same
backup after a refresh.
2018-09-13 17:11:46 +01:00
Bruno Windels
7dc92fe917 Avoid clearing e2e encryption keys, also avoid warning 2018-08-13 17:24:27 +02: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
94c424d3bb translations 2018-08-13 11:24:32 +02:00
Bruno Windels
2f9aaeca46 undo whitespace change 2018-08-13 11:17:04 +02:00
Bruno Windels
09ad138306 remove unused imports 2018-08-13 11:16:29 +02:00
Bruno Windels
28292c3388 implement PR feedback, move LL dialog to UserSettings 2018-08-13 11:14:30 +02:00
Bruno Windels
3731431e59 use LL controller in setting 2018-08-09 18:41:41 +02:00
Bruno Windels
028f09e5d1 lazy loading settings controller to show dialog and export e2e keys 2018-08-09 18:39:55 +02:00
Bruno Windels
308a6b419e allow a setting controller to validate and revert a change (asynchronously) 2018-08-09 16:56:02 +02:00
Bruno Windels
af07d73432 hide lazy loading behind feature flag 2018-07-25 16:10:49 +02:00
David Baker
cfa7d0f11d Take jitsi conf calling out of labs 2018-07-24 19:06:19 +01:00
Michael Telatynski
37a8e7f2e2
add setting to throw new RoomSubList hide behaviour behind an opt-in
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-30 17:07:28 +01:00
David Baker
553111b6e2
Merge pull request #2001 from matrix-org/t3chguy/default_url_previews_off_e2ee
default to not showing url previews in e2ee rooms.
2018-06-25 11:50:14 +01:00
Michael Telatynski
d1600bdacf
fix event type which room-account settings were read from
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-22 19:17:31 +01:00
Michael Telatynski
acbc84a69c
switch to another settings key for e2e url previews to protect on change
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-22 18:44:54 +01:00
David Baker
6252f5b818 Merge remote-tracking branch 'origin/develop' into dbkr/jitsi_makewidget 2018-06-22 11:31:54 +01:00