Commit Graph

21082 Commits (8812f98b35359352b70bb10ad4ccfbc3cd4f4824)

Author SHA1 Message Date
Travis Ralston 0e49c4343c Internalize algorithm updates in the new room list store
Fixes https://github.com/vector-im/riot-web/issues/14411

The act of setting/changing the algorithm was causing the update function to be marked, meaning we wouldn't trigger an update until something else happened later. To get around this, and still support internal functions spamming calls without multiple updates, we simply move the guts to an internalized function and make the public interface do a trigger.
2020-07-10 21:59:12 -06:00
Travis Ralston c153232575 Merge branch 'develop' into travis/room-list/enable 2020-07-10 21:33:35 -06:00
Travis Ralston cfc39dc4a9 Remove now-dead code from sublist resizing 2020-07-10 16:10:05 -06:00
Travis Ralston 3062d14a78 Convert ImportanceAlgorithm over to using NotificationColor instead
Fixes https://github.com/vector-im/riot-web/issues/14362 implicitly

By re-using constructs we already have, we don't need to invent code which figures it out.
2020-07-10 16:07:40 -06:00
Travis Ralston 87120c6c26 Ensure triggered updates get fired for filters in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14404
2020-07-10 15:58:39 -06:00
Travis Ralston bb6d46f926 When the algorithm changes, re-add the filter listener 2020-07-10 15:57:05 -06:00
Travis Ralston bdb641279a Merge branch 'develop' into travis/room-list/enable 2020-07-10 11:11:25 -06:00
Travis Ralston 9e76a2cebf Handle off-cycle filtering updates in the new room list 2020-07-10 11:07:47 -06:00
Travis Ralston 1175eb001f Fix bad merge 2020-07-10 11:01:11 -06:00
Travis Ralston 477472c178 Merge branch 'develop' into travis/room-list/showmore2 2020-07-10 10:57:17 -06:00
Bruno Windels ae8d6f5523 make tsc happy 2020-07-10 18:48:54 +02:00
Bruno Windels 15ea3a5287 add types 2020-07-10 18:42:51 +02:00
Bruno Windels 85ac256231 cleanup 2020-07-10 18:40:09 +02:00
Bruno Windels e2aa6ecf6b fix show X more counter 2020-07-10 18:40:09 +02:00
Bruno Windels 86817430c5 update initially shown amount of tiles on component update
as rooms aren't all available at ctor time
2020-07-10 18:40:09 +02:00
Bruno Windels 96f2968854 make all height changes update component state
also set visibleTiles as side-effect
2020-07-10 18:40:09 +02:00
Bruno Windels 652fb9e613 track height in pixels in component state 2020-07-10 18:40:09 +02:00
Travis Ralston 314250a6e4 Add a test mode flag to the store 2020-07-10 10:38:07 -06:00
Bruno Windels 49f7170d95 extract type 2020-07-10 18:31:53 +02:00
Bruno Windels 725b7f8950 make show more button a bit less tall 2020-07-10 18:30:52 +02:00
Bruno Windels d5a3071518 put show more button inside resizer
this way we have a flexbox layout in the resizer with:
 - the resize handle (fixed)
 - the show more/less button, if any (fixed)
 - the list of tiles (grabbing whatever is left)
2020-07-10 18:29:39 +02:00
Travis Ralston f8db0a4637 Resolve complex merge conflicts 2020-07-10 10:21:00 -06:00
Travis Ralston bf0a503e44 [WITH CONFLICTS] Merge branch 'develop' into travis/room-list/enable 2020-07-10 10:18:12 -06:00
Travis Ralston 26427817f2 Fix potential listener conflict with RVS
If the RVS ever emits something that contains `trigger: false`, we're pretty screwed, so avoid that.
2020-07-10 08:18:40 -06:00
Travis Ralston 46d53e5c8c Reset before trigger just in case the function triggers too 2020-07-10 08:14:33 -06:00
Travis Ralston a5ba0cad1f Rename to trigger and add docs 2020-07-10 08:13:23 -06:00
Travis Ralston ef18cd5ca1 Merge branch 'develop' into travis/room-list/perf/dedupe-recalc 2020-07-10 07:18:12 -06:00
Travis Ralston 840a4127db
Merge pull request #4944 from matrix-org/travis/room-list/perf/log-disable
Add an option to disable room list logging, and improve logging
2020-07-10 07:16:56 -06:00
Travis Ralston 75dbd5f1d4 Merge branch 'develop' into travis/room-list/enable 2020-07-09 22:28:16 -06:00
Jorik Schellekens 60695838d6
Merge pull request #4927 from matrix-org/joriks/room-list-auto-expand-on-search
Auto expand room list on search
2020-07-10 02:45:13 +01:00
Jorik Schellekens ceff68476d Remove useless dispatches 2020-07-10 02:25:47 +01:00
Jorik Schellekens 1983591cbf Remove unused actions 2020-07-10 02:22:34 +01:00
Travis Ralston cf154ec9cf Add an option to disable room list logging, and improve logging
For https://github.com/vector-im/riot-web/issues/14035

**This option is not recommended as it completely obliterates all chances of being able to support someone with a broken room list. It is intended for specific testing scenarios only.**
2020-07-09 18:19:38 -06:00
Travis Ralston 8624e8beeb Break up the event loop tasks for the room list
The room list does a hefty amount of work, so instead of blocking the event loop with a `/sync` request and a bunch of room updates (as we can get multiple per sync) we can instead run it over several smaller tasks. The smaller tasks help the event loop do other things between our tasks, ensuring we don't inadvertently block the UI from rendering too slowly.

On my account and machine, this cuts the time to render in half (~30ms, down from ~60ms) .
2020-07-09 15:11:21 -06:00
Travis Ralston 1315f34662 Dedupe room list store updates by marking for updates
The core of this is in the MarkedExecution class, with the remainder of the commit ensuring that the right marks and triggers are in place to do the firing.

Because everything is async/await and run through the RoomListStore, we don't have to worry about self-fed updates in the algorithm classes. This also means we have to trigger pretty much all the time. 

Changes to tag ordering / list sorting get hit through two paths, so we mark before we do a bulk update and otherwise assume the call is coming in from outside.
2020-07-09 14:53:14 -06:00
Travis Ralston 859f65659c Attempt to support a hard cutoff with the show more button
Known issues:
* Causes scroll jumps when the button gets added to DOM
* Resize handle is invisible when there's a show more button

TODO:
* Clean up comments
* Clean up useless code (all the padding stuff isn't needed)
2020-07-09 13:07:13 -06:00
Bruno Windels ce68314de9 Revert "Merge pull request #4932 from matrix-org/travis/room-list/invisible-show-more"
This reverts commit f58a0a7538.
2020-07-09 12:13:12 -06:00
Travis Ralston f8e1996e2f Handle NewRoom and PossibleTagChange updates correctly
For new rooms, we need to append to our list of known rooms. For tag changes, we need to be sure to update our cache when the tag can reasonably be assumed to have changed.

Fixes https://github.com/vector-im/riot-web/issues/14389
2020-07-09 12:08:40 -06:00
Travis Ralston 00fc34924c Fix rooms disappearing that were created by the user
Fixes https://github.com/vector-im/riot-web/issues/14388

We were receiving a read receipt before a room object, leading to the algorithm to assume the room is archived (no membership), which was causing later index issues when the room tried to get moved from archived to untagged.

To prevent this, we just ignore nonsensical updates.
2020-07-09 11:39:40 -06:00
Jorik Schellekens 8a7bebc6bf lint 2020-07-09 18:37:18 +01:00
Jorik Schellekens ade89ab4e9 Move sublist auto expand to out from layouts
Co-authored-by: Travis Ralston <travpc@gmail.com>
2020-07-09 18:32:28 +01:00
Jorik Schellekens 096cd482f1 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into joriks/room-list-auto-expand-on-search 2020-07-09 18:22:26 +01:00
Travis Ralston ae09bfb8fd Don't destroy room notification states when replacing them
The "should never happen" now happens a lot by design. We shouldn't destroy the state as it'll stop badge counts for everything.

Fixes https://github.com/vector-im/riot-web/issues/14391
2020-07-09 10:22:04 -06:00
Jorik Schellekens 9b79de7fe7 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into joriks/room-list-auto-expand-on-search 2020-07-09 17:14:52 +01:00
Jorik Schellekens d94b6e2b36
Merge pull request #4937 from matrix-org/joriks/appearance-tab-irc-setting-in-advanced
Move irc layout option to advanced
2020-07-09 16:20:37 +01:00
Jorik Schellekens 1033eda7fb Move irc layout option to advanced 2020-07-09 15:54:44 +01:00
Bruno Windels f58a0a7538
Merge pull request #4932 from matrix-org/travis/room-list/invisible-show-more
Potential solution to supporting transparent 'show more' buttons
2020-07-09 14:43:20 +00:00
Travis Ralston bd8e1f7198
Merge pull request #4931 from matrix-org/travis/room-list/sticky-headers
Improve performance and stability in sticky headers for new room list
2020-07-09 08:00:56 -06:00
Travis Ralston 57b2ae9a0d Merge branch 'develop' into travis/room-list/perf/notifications 2020-07-09 07:46:01 -06:00
Travis Ralston 8aa2ed0c8b
Merge pull request #4934 from matrix-org/travis/room-list/perf/layout
Move list layout management to its own store
2020-07-09 07:44:44 -06:00
Jorik Schellekens ecc109c45d
Merge pull request #4933 from matrix-org/joriks/room-list-noop-first-breadcrumb
Noop first breadcrumb
2020-07-09 13:47:38 +01:00
Travis Ralston 47380306c2 Move and improve notification state handling
Previously we were creating a notification state whenever we needed one, which was leading to hundreds of listeners even on a small account. To ease the burden, and reduce the load of having to wake so many listeners, we now record a single listener for each tag ID and room combination.

This commit also introduces a number of utilities to make future notification work a bit of an easier transition, such as the `isX` and `hasX` getters on the new NotificationState abstract class. Similarly, "snapshots" have been added to reduce code duplication between different kinds of states checking for updates.

The ListNotificationState is now heavily tied into the store which offers it to help reuse the cache of room notification states. 

Fixes https://github.com/vector-im/riot-web/issues/14370
2020-07-08 19:26:25 -06:00
Travis Ralston 62b4596c04 Be consistent with other stores 2020-07-08 18:36:56 -06:00
Travis Ralston c8f90be81d Ensure the map gets cleared upon logout 2020-07-08 18:32:12 -06:00
Jorik Schellekens 2baa78d26b Move no-op to breadcrumb store 2020-07-09 01:31:44 +01:00
Travis Ralston c5812d6c27 Move list layout management to its own store
This is more general maintenance than performance as the RoomList doesn't need to be generating layouts for the sublists, and it certainly doesn't need to be creating a bunch of extra ones. 

The sublists are perfectly capable of getting their own layout instance and using it, and we are perfectly able to limit the number of these things we create through the session's lifespan.
2020-07-08 18:28:21 -06:00
Jorik Schellekens 016710af6a Noop first breadcrumb 2020-07-09 00:44:23 +01:00
Michael Telatynski ada68c4220
Merge pull request #4892 from jugglinmike/gh-13135-highlight-jump-to-bottom
Highlight "Jump to Bottom" badge when appropriate
2020-07-09 00:20:37 +01:00
Travis Ralston 8972cf9378 Potential solution to supporting transparent 'show more' buttons
In this demonstration, we remove the cutting line (as it collides with the tile in a weird spot) and instead replace the tile with a placeholder when the text is about to collide with the avatar in the tile. We use a `round()` for this because through some amazing coincidence the collision happens at 0.47, which is close enough to 0.5 for people not to notice.
2020-07-08 16:09:45 -06:00
Travis Ralston 74ca0618ac Improve scrolling performance for sticky headers
The layout updates are anecdotal based on devtools flagging the values which are "changing" even if they aren't.  The scrolling feels better with this as well, though this might be placebo.
2020-07-08 14:55:28 -06:00
Travis Ralston f9aca7c05e Avoid bounding box usage in sticky headers & improve reliability
We now use offsets and scroll information to determine where the headers should be stuck to, still supporting the transparent background.

Some scroll jumps were originally introduced as part of the change in numbering, so they have been fixed here. By proxy, some additional scroll jump/instability should be fixed as well.

This has a lingering problem of still causing a huge number of no-op UI updates though, which will be dealt with in a future commit.
2020-07-08 14:37:35 -06:00
Travis Ralston 6e20850567 Remove sanity check from requestAnimationFrame
It should be in all major browsers as of years ago, and we use it unguarded elsewhere in the app. The performance benefits of it appear to be worthwhile enough to keep it, though it's not a perfect solution.
2020-07-08 12:17:51 -06:00
Michael Telatynski 3abf1586f9
Merge pull request #4930 from matrix-org/t3chguy/room-list/14380
Don't render the context menu within its trigger otherwise unhandled clicks bubble
2020-07-08 19:13:20 +01:00
Michael Telatynski e2d65222a2 Don't render the context menu within its trigger otherwise unhandled clicks will re-trigger
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-08 18:59:27 +01:00
Travis Ralston 9b48130f4f Protect rooms from getting lost due to complex transitions
Fixes https://github.com/vector-im/riot-web/issues/14378

Rooms transitioning between multiple states are often at risk of going missing due to the sticky room handling. We now protect that transition by bluntly ensuring the room can't go missing, and by always ensuring we have an updated reference to the room.
2020-07-08 11:48:34 -06:00
Jorik Schellekens 23754ae2bd i18n 2020-07-08 18:07:01 +01:00
Jorik Schellekens bb18e677f9 Lint semis 2020-07-08 18:05:07 +01:00
Jorik Schellekens fe2bb355ab Hide archive button 2020-07-08 18:02:20 +01:00
Jorik Schellekens 8773d67df7 Auto expand room list on search 2020-07-08 17:28:15 +01:00
Travis Ralston eb38d80bd5
Merge pull request #4920 from matrix-org/joriks/room-list-priorities
Enable options to favourite and low priority rooms
2020-07-08 10:08:02 -06:00
Travis Ralston 0368bff5b1
Merge pull request #4904 from matrix-org/joriks/room-list-voip
Move voip previews to bottom right corner
2020-07-08 10:07:42 -06:00
Jorik Schellekens 5ba64aa4e1 Back to defaul orientation 2020-07-08 17:03:08 +01:00
Jorik Schellekens 9dd28a9ce0 semi 2020-07-08 17:02:26 +01:00
Jorik Schellekens 4ae64aff9a lint line length 2020-07-08 16:14:04 +01:00
Jorik Schellekens 6ca7150533 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into
joriks/room-list-priorities
2020-07-08 16:08:55 +01:00
Jorik Schellekens 53bdddfcdd Fix discrepancies with style 2020-07-08 16:07:38 +01:00
Jorik Schellekens fb6791e221
Merge pull request #4923 from matrix-org/joriks/room-list-focus-search
Focus room filter on openSearch
2020-07-08 15:20:08 +01:00
Travis Ralston 3912f2d21c Merge remote-tracking branch 'origin/develop' into travis/room-list/resizable 2020-07-08 07:55:10 -06:00
Travis Ralston b4f3b8ab11 Use the right variables when detecting max height 2020-07-08 07:53:55 -06:00
Travis Ralston b2abe61fc5 clarify which NumberSize to use 2020-07-08 07:51:48 -06:00
Travis Ralston 9b0eeae2eb Clarify who is meant to use the polyfill 2020-07-08 07:51:04 -06:00
Bruno Windels 989e4a9ceb
Merge pull request #4912 from matrix-org/bwindels/bettersticky
Add wrapper to room list so sticky headers don't need a background
2020-07-08 13:34:01 +00:00
Bruno Windels a361ac3f83 make collapsing/expanding the first header work again 2020-07-08 15:11:47 +02:00
Bruno Windels 0d94cfa97a put sticky headers in padding of wrapper
this way they don't need a background, as the list is already clipped
2020-07-08 14:49:38 +02:00
Bruno Windels 75751abc60 add wrapper we can then add padding to when sticking headers 2020-07-08 14:49:04 +02:00
Michael Telatynski 5d23e4216e
Merge pull request #4908 from matrix-org/t3chguy/room-list/12345
New room list view_room show_room_tile support
2020-07-08 13:34:28 +01:00
Michael Telatynski ec54d509e5 remove stale debug log
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-08 13:24:40 +01:00
Michael Telatynski d7ad555c12
Merge pull request #4871 from matrix-org/t3chguy/room-list/3
Convert Context Menu to TypeScript
2020-07-08 13:24:10 +01:00
Michael Telatynski 5ef93686d9
Merge pull request #4925 from matrix-org/t3chguy/room-list/14352
Use html innerText for org.matrix.custom.html m.room.message room list previews
2020-07-08 13:23:58 +01:00
Michael Telatynski 64d7580494
Merge pull request #4913 from matrix-org/t3chguy/fix/14363
Fix MELS summary of 3pid invite revocations
2020-07-08 13:23:45 +01:00
Michael Telatynski 7b115056b0 Fix sticky headers being left on display:none if they change too quickly
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-08 09:21:33 +01:00
Michael Telatynski faa9124f2b Merge branches 'develop' and 't3chguy/room-list/12345' of github.com:matrix-org/matrix-react-sdk into t3chguy/room-list/12345
 Conflicts:
	src/components/views/rooms/RoomTile2.tsx
2020-07-08 08:57:01 +01:00
Michael Telatynski 8d5d3b1c92 Use html innerText for org.matrix.custom.html m.room.message room list previews
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-08 08:50:25 +01:00
Michael Telatynski c5e8a0b5af Convert HtmlUtils to TypeScript
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-08 08:40:58 +01:00
Travis Ralston 15b6a273c9 Swap out the resizer lib for something more stable
react-resizer appears to be okay at tracking state, but it often desyncs from reality. re-resizer is more maintained and more broadly used (160k downloads vs 110k), and appears to generally do a better job of tracking the cursor.

The new library has some oddities though, such as deltas, touch support (hence the polyfill), and calling handles "Enable".

For https://github.com/vector-im/riot-web/issues/14022
2020-07-07 22:21:00 -06:00
Jorik Schellekens 8679d90703 lint semi 2020-07-08 00:27:29 +01:00
Jorik Schellekens 70c1bf3e5c Focus room filter on openSearch 2020-07-08 00:25:43 +01:00
Travis Ralston 8357461c9b Merge branch 'develop' into travis/room-list/enable 2020-07-07 16:20:38 -06:00
Jorik Schellekens f4e05142db lint 2020-07-07 23:17:56 +01:00
Travis Ralston 774e32ecf0 Fix DM handling in new room list 2020-07-07 16:16:46 -06:00