Commit graph

980 commits

Author SHA1 Message Date
Jorik Schellekens
4ba1f91a2b Fix lint issues in new code 2020-07-20 20:43:55 +01:00
Jorik Schellekens
c3ffbdbdbc Fix naming format errors 2020-07-20 20:02:21 +01:00
Jorik Schellekens
b3fa855bd8 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into joriks/eslint-config 2020-07-20 16:22:32 +01:00
Michael Telatynski
29defa3e57 Tag Watcher don't create new filter if not needed, confuses references
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-20 14:36:12 +01:00
Travis Ralston
2dfd636a9e Appease the linter 2020-07-17 16:28:49 -06:00
Travis Ralston
7fc5ba50c8 Update references to issues 2020-07-17 16:22:33 -06:00
Travis Ralston
a4f7f666cf Remove useless TagSpecificNotificationState
FTUE Notifications won't be needing this.
2020-07-17 16:20:19 -06:00
Travis Ralston
1cce6e2e32 Enable new room list store forever 2020-07-17 15:14:58 -06:00
Travis Ralston
2b15ba21dd Rename RoomListStore file 2020-07-17 15:11:34 -06:00
Travis Ralston
209a5d2220 Rename RoomListStore2 class name
We use `RoomListStore` as a singleton, and don't want the ugly `2` at the end of the actual store instance, so here we rename it to something half-decent.
2020-07-17 15:10:30 -06:00
Travis Ralston
1f9c07861e Remove the old room list store 2020-07-17 14:27:45 -06:00
Travis Ralston
62b58e18e9 Remove the temporary room list store proxy 2020-07-17 14:25:56 -06:00
Travis Ralston
1810711380 Dismantle usage of the proxy store class 2020-07-17 14:25:09 -06:00
Travis Ralston
06336a88b3 Remove setting for old room list 2020-07-17 14:06:30 -06:00
Travis Ralston
c29da883db Convert room list log setting to a real setting
To debug https://github.com/vector-im/riot-web/issues/14554 and https://github.com/vector-im/riot-web/issues/14508
2020-07-16 14:43:43 -06:00
Michael Telatynski
725fa7df9b
Merge pull request #4997 from matrix-org/t3chguy/fix/14526
Fix filtering by community not showing DM rooms with community members
2020-07-16 12:41:50 +01:00
Michael Telatynski
b1d57ca13e
Merge pull request #4996 from matrix-org/t3chguy/room-list/14491
Fix enter in new room list filter breaking things
2020-07-16 12:41:39 +01:00
Michael Telatynski
3498922882 Fix filtering by community not showing DM rooms with community members
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-16 09:13:23 +01:00
Michael Telatynski
2f959a974a Fix enter in new room list filter breaking things
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-16 06:31:06 +01:00
Michael Telatynski
0097ba24a4 When removing a filter condition, try recalculate in case it wasn't the last one
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-16 05:52:39 +01:00
Travis Ralston
945dab6b1f Revert "Turn previews on for DMs and ensure they get rendered"
This reverts commit b19ae3ac93.
2020-07-14 13:36:28 -06:00
Travis Ralston
f6b9d44e4b Invert logging 2020-07-14 13:18:06 -06:00
Travis Ralston
b19ae3ac93 Turn previews on for DMs and ensure they get rendered 2020-07-14 12:49:29 -06:00
Travis Ralston
d74e803fa9 Remove potential source of room duplication issues
This is an estimated fix as the problem cannot be easily identified. We don't appear to need these lines, unlike what the comment implies.
2020-07-14 12:40:48 -06:00
Travis Ralston
e955feb12d Revert "Merge pull request #4972 from matrix-org/travis/room-list/prelaunch/3-remove-debug"
This reverts commit e1b34acdc8.
2020-07-14 12:02:40 -06:00
Travis Ralston
e1b34acdc8
Merge pull request #4972 from matrix-org/travis/room-list/prelaunch/3-remove-debug
Remove debug logging from new room list
2020-07-14 09:56:17 -06:00
J. Ryan Stinnett
f16962bb41
Merge pull request #4970 from matrix-org/travis/room-list/prelaunch/1-cleanup
Clean up TODOs, comments, and imports in the new room list
2020-07-14 09:38:30 +01:00
Travis Ralston
6632db01cf Remove debug logging from new room list
Fixes https://github.com/vector-im/riot-web/issues/14408

Yes, all the issue references are wrong :(
2020-07-13 20:34:05 -06:00
Travis Ralston
4a8a59c578 Make EffectiveMembership utils generic
Fixes https://github.com/vector-im/riot-web/issues/14460

Just have to move them to utils.
2020-07-13 20:29:46 -06:00
Travis Ralston
bdb136e24e Clean up TODOs, comments, and imports in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14412
2020-07-13 20:25:02 -06:00
Travis Ralston
80cf2839d9 Ensure breadcrumbs don't keep turning themselves back on
Fixes https://github.com/vector-im/riot-web/issues/14452
2020-07-13 18:46:17 -06:00
Travis Ralston
19500cf96a Allow the tests to force a MatrixClient 2020-07-13 13:24:02 -06:00
Travis Ralston
eb78b1b328 Export the matrix client from the store 2020-07-13 13:18:01 -06:00
Travis Ralston
a8829f09d0 Ensure RoomListStore2 gets reset when the client becomes invalidated
Fixes https://github.com/vector-im/riot-web/issues/14384

We also make use of the new AsyncStore type to handle this more safely.
2020-07-13 13:15:44 -06:00
Travis Ralston
1f57b85b30
Merge pull request #4962 from matrix-org/travis/room-list/leave-fix
Ensure tag changes (leaving rooms) causes rooms to move between lists
2020-07-13 12:44:23 -06:00
Travis Ralston
d2c7a55fa0 Ensure tag changes (leaving rooms) causes rooms to move between lists
Fixes https://github.com/vector-im/riot-web/issues/14442

Turns out that we are so good at moving a room that when it flows through as a TIMELINE update the algorithm no-ops and does nothing, so don't do that.
2020-07-13 12:00:56 -06:00
Travis Ralston
40ab3e23c6 Add a null guard on the client 2020-07-13 10:09:46 -06:00
Travis Ralston
9a3744ebb2 Fix default sorting mechanics for new room list
Fixes https://github.com/vector-im/riot-web/issues/14445
2020-07-13 09:54:15 -06:00
Travis Ralston
0908e813fb Merge branch 'develop' into travis/room-list/enable 2020-07-12 22:50:27 -06:00
Travis Ralston
1c52c2777e
Merge pull request #4949 from matrix-org/travis/room-list/mute-floats
Convert ImportanceAlgorithm over to using NotificationColor instead
2020-07-12 11:00:18 -06:00
Travis Ralston
31f1fbd962
Merge pull request #4951 from matrix-org/travis/room-list/fix-sublist-menu
Internalize algorithm updates in the new room list store
2020-07-11 12:15:53 -06:00
Travis Ralston
b924dcc6ad
Merge pull request #4950 from matrix-org/travis/room-list/cleanup-resizing
Remove now-dead code from sublist resizing
2020-07-11 12:11:51 -06:00
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
477472c178 Merge branch 'develop' into travis/room-list/showmore2 2020-07-10 10:57:17 -06:00
Travis Ralston
314250a6e4 Add a test mode flag to the store 2020-07-10 10:38:07 -06: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
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
75dbd5f1d4 Merge branch 'develop' into travis/room-list/enable 2020-07-09 22:28:16 -06: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
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
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
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
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
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
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
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
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
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
Travis Ralston
8357461c9b Merge branch 'develop' into travis/room-list/enable 2020-07-07 16:20:38 -06:00
Travis Ralston
774e32ecf0 Fix DM handling in new room list 2020-07-07 16:16:46 -06:00
Travis Ralston
0b83926201 Merge branch 'develop' into travis/room-list/enable 2020-07-07 15:46:05 -06:00
Travis Ralston
f89fcd1fe9 Fix tests and add general safety
We don't need the fake clock anymore, but we do have to wait for async actions to complete before moving forward.

This also exposes a number of functions for the store to be puppetted with.
2020-07-07 15:45:59 -06:00
Travis Ralston
85e018111b
Merge pull request #4918 from matrix-org/travis/room-list/respect-old-settings
Respect and fix understanding of legacy options in new room list
2020-07-07 15:19:56 -06:00
Travis Ralston
3dfb9711ed
Merge pull request #4916 from matrix-org/travis/room-list/dm-handle
Ensure DMs are not lost in the new room list, and clean up tag logging
2020-07-07 15:14:27 -06:00
Travis Ralston
a59a8b76a9 Update TODO comments to point to new issue 2020-07-07 14:51:43 -06:00
Travis Ralston
a4ef5909f9 Respect and fix understanding of legacy options
Fixes https://github.com/vector-im/riot-web/issues/14372

We read/use the options in multiple places, and those places were not in sync. Now when algorithms change and on initial load, both will come to the same conclusions about how to order & sort the rooms.
2020-07-07 14:45:08 -06:00
Travis Ralston
8ef4b1b2e7 Replace labs flag with a real setting 2020-07-07 13:56:46 -06:00
Travis Ralston
34ea8342fb Remove comment claiming encrypted rooms are handled incorrectly
Fixes https://github.com/vector-im/riot-web/issues/14238

The encrypted rooms are loaded on startup (eventually), so we don't need to worry about the problem described.
2020-07-07 13:49:36 -06:00
Travis Ralston
2488520263 Clean up tag logging in setKnownRooms
We don't need this anymore
2020-07-07 13:46:29 -06:00
Travis Ralston
be1b2fddaf Ensure DMs are not lost in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14236
2020-07-07 13:46:10 -06:00
Michael Telatynski
8ba2be0be5
Merge pull request #4900 from matrix-org/t3chguy/room-list/1234
New Room List implement view_room_delta for keyboard shortcuts
2020-07-07 15:36:30 +01:00
Travis Ralston
7173ea71a5
Merge pull request #4905 from matrix-org/travis/room-list/room-safety
Improve room safety in the new room list
2020-07-07 06:59:59 -06:00
Travis Ralston
b3b404f121
Merge pull request #4906 from matrix-org/travis/room-list/invites-list
Fix a number of issues with the new room list's invites
2020-07-07 06:55:30 -06:00
Travis Ralston
2c502ed2fe Decrease default visible rooms down to 5 2020-07-06 20:48:49 -06:00
Travis Ralston
56333ae017 Ensure the recents algorithm is aware of invites 2020-07-06 20:42:43 -06:00
Travis Ralston
8739e2f781 Fix room duplication when the sticky room reference changes 2020-07-06 20:12:25 -06:00
Travis Ralston
34bd59c151 Remove the lock around the algorithm
This isn't needed
2020-07-06 19:38:13 -06:00
Travis Ralston
70e5da677b Clean up debug logging 2020-07-06 19:38:13 -06:00
Travis Ralston
dd833f4f2f Ensure the sticky room changes if the tag changes
This fixes a case where a user accepts an invite, which causes a tag change, but the room stays stuck in the invites list. The tag change additionally gets swallowed when the user moves away, causing the room to get lost. 

By moving it when we see it, potentially during a sticky room change itself (though extremely rare), we avoid having the room get lost in the wrong lists. A side effect of this is that accepting an invite puts it at the top of the tag it's going to (usually untagged), however this feels like the best option for the user.

A rare case of a tag change happening during a sticky room change is when a leave event comes in for the sticky room, but because it's come through as a tag change it can get swallowed. If it does get swallowed and the user clicks away, the tag change will happen when the room is re-introduced to the list (fake NewRoom event).
2020-07-06 19:38:13 -06:00
Travis Ralston
4345f972e0 Handle sticky room to avoid accidental removal
Plus a bunch of logging.

This fixes a case where switching rooms would cause the last room you were on to disappear due to an optimization where known NewRoom fires would be translated to tag change fires, which wouldn't re-add the room to the underlying tag algorithm.

By tracking the last sticky room, we can identify when we're about to do this and avoid it. 

This commit also adds a check to ensure that we have the latest reference of a room stored as rooms changing from invite -> join change references.

This commit additionally updates the PossibleTagChange handling to be faster and smarter, leading to a more stable generation of the room list. We convert the update cause to a Timeline update in order to indicate it is a change within the same tag rather than having to jump tags. This also means that PossibleTagChange should no longer make it as far as the underlying algorithm.

New logging has also been added to aid debugging.
2020-07-06 19:38:13 -06:00
Travis Ralston
18df29b627 Flag & add some debugging 2020-07-06 19:38:13 -06:00
Travis Ralston
0b6f744a58 Wrap handleRoomUpdate in a lock
Dev note: this is removed in a later commit
2020-07-06 19:38:13 -06:00
Michael Telatynski
1849ed90d2 Implement ViewRoomDelta for the new Room List
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-06 17:58:29 +01:00
Travis Ralston
9c1efe728c
Revert "Remove a bunch of noisy logging from the room list" 2020-07-03 08:54:54 -06:00
Travis Ralston
98ce1dafee Remove a bunch of noisy logging from the room list
None of these logs are actually needed for troubleshooting anymore.
2020-07-02 16:39:36 -06:00
Travis Ralston
ae076a7439 Add a null guard for message event previews 2020-07-02 16:23:38 -06:00
Travis Ralston
a6e0799b57 Handle push rule changes in the RoomNotificationState 2020-07-02 15:05:01 -06:00
Travis Ralston
a5001e50aa Disable all unread decorations on muted rooms 2020-07-02 13:33:24 -06:00
Travis Ralston
b54635863f Merge branch 'develop' into travis/room-list/notification-state 2020-07-02 13:26:16 -06:00
Travis Ralston
b65972d44f Fix indentation 2020-07-02 13:23:20 -06:00
Travis Ralston
43db4b98df Merge branch 'develop' into joriks/room-list-breadcrumbs 2020-07-02 13:22:51 -06:00
Travis Ralston
b7aa8203b6 Wedge community invites into the new room list
Fixes https://github.com/vector-im/riot-web/issues/14179

Disclaimer: this is all of the horrible because it's not meant to be here. Invites in general are likely to move out of the room list, which means this is temporary. Additionally, the communities rework will take care of this more correctly. For now, we support the absolute bare minimum to have them shown.
2020-07-02 09:04:38 -06:00
Jorik Schellekens
1c0d46b6e1 Make breadcrumbs respsect setting 2020-07-02 15:26:51 +01:00
Travis Ralston
51ce80f333 Merge branch 'develop' into travis/room-list/notification-state 2020-07-01 12:01:07 -06:00
Travis Ralston
2cd6fae2ce
Merge pull request #4865 from matrix-org/travis/room-list/default-vis
Improve resizing interactions in the new room list
2020-07-01 11:59:54 -06:00
Jorik Schellekens
d203943b7f lint semis 2020-07-01 16:07:27 +01:00
Jorik Schellekens
2162517a37 Display breadcrumbs only after 20 rooms have been joined 2020-07-01 16:05:27 +01:00
Travis Ralston
fed0c327d5
Merge pull request #4866 from matrix-org/travis/room-list/rm-ordering-options
Disable use of account-level ordering options in new room list
2020-07-01 07:25:04 -06:00
Travis Ralston
5a43acd42a Fix reaction event crashes in message previews
Fixes https://github.com/vector-im/riot-web/issues/14224
2020-06-30 19:51:28 -06:00
Travis Ralston
d402808101 Disable use of account-level ordering options in new room list
Fixes https://github.com/vector-im/riot-web/issues/14069

We can't drop them completely for compatibility with the old room list.
2020-06-30 19:31:59 -06:00
Travis Ralston
8cfbfd4221 Increase RESIZER_BOX_FACTOR to account for overlap from handle
Fixes https://github.com/vector-im/riot-web/issues/14136

The resizer handle wasn't being considered in this. 78% is both verified through mathematics and playing with it manually.
2020-06-30 19:20:11 -06:00
Travis Ralston
7674030c6e Show 'show more' when there are less tiles than the default
For example, if you only have 3/10 rooms required for the default then resize smaller, we should have a 'show more' button.

This works by changing the rendering to be slightly more efficient and only looping over what is seen (renderVisibleTiles(), using this.numTiles in place of tiles.length) and using a new setVisibleTilesWithin() function on the layout. Previously resizing the 3/10 case would be setting visibleTiles to ~8 instead of ~1 like it should (because the getter returns a default).
2020-06-30 19:14:36 -06:00
Travis Ralston
8cfe12b817 Add a layout reset function
For https://github.com/vector-im/riot-web/issues/14265

Intended to be accessed via `mx_RoomListStore2.resetLayout()`
2020-06-30 18:52:44 -06:00
Travis Ralston
f935303eeb Change default number of rooms visible to 10
Fixes https://github.com/vector-im/riot-web/issues/14266
2020-06-30 18:51:59 -06:00
Jorik Schellekens
0904ae8c7a Bug fixes 2020-06-30 23:35:59 +01:00
Jorik Schellekens
dcd51b5be3 Implement breadcrumb notifications and scrolling 2020-06-30 23:24:46 +01:00
Travis Ralston
9de42513dc Handle sticky rooms when regenerating lists
`setKnownRooms` is called to regenerate the room list, and if we don't take the sticky room out of the equation we end up with the room being duplicated. So, to make this easy, we simply remove the sticky room and handle it after the fact.
2020-06-30 15:04:47 -06:00
Travis Ralston
da2fd35094 Add sanity check to ensure we don't accidentally proliferate rooms
This small check just ensures that we aren't about to blindly accept that the calling code knows what it is doing. There are some unknown cases where NewRoom gets fired for rooms we already know about, so in those cases we just change it to a PossibleTagChange which is what the caller likely intended. 

Many of the edge cases are unknown, though this can happen for an invite being accepted (for example). It's easier to handle it here instead of tracking down every single possibility and fixing it higher up.
2020-06-30 14:36:11 -06:00
Travis Ralston
6a191ea3ee Handle room invites as new rooms
We wouldn't have seen them before, so might as well treat them as new instead of tag changes.
2020-06-30 14:23:00 -06:00
Travis Ralston
223ee0dbdb Add locking to avoid index corruption
When a new room is added there's a fairly good chance that the other events being dispatched will happen in the middle of (for example) the room list being re-sorted. This commit wraps the entire handleRoomUpdate() function for the underlying algorithms in a lock so that if we're unlucky enough to get an update while we're sorting (as the ImportanceAlgorithm splices out what it is sorting) we won't scream about invalid index errors.
2020-06-30 13:55:53 -06:00
Travis Ralston
c7a83e65f0 Fix proliferation when joining upgraded rooms
We have to do a bit of a dance to return the sticky room to the list so we can remove it, if needed, and ensure that we generally swap the rooms out of the list.
2020-06-30 13:55:15 -06:00
Travis Ralston
782a555e44 Make badges represent old list behaviour
Fixes https://github.com/vector-im/riot-web/issues/14160
2020-06-30 13:45:10 -06:00
Travis Ralston
393eaf84c3 Move notification states out of the NotificationBadge component
Fixes https://github.com/vector-im/riot-web/issues/14153
2020-06-30 13:34:44 -06:00
Michael Telatynski
f269aefe18
Merge pull request #4855 from matrix-org/t3chguy/download_toast
Add Generic Expiring Toast and timing hooks
2020-06-30 17:02:04 +01:00
Jorik Schellekens
b110639c76 Merge remote-tracking branch 'origin' into joriks/eslint-config 2020-06-29 16:49:33 +01:00
Michael Telatynski
d477a49160 ToastStore fix type definition
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-06-29 11:34:58 +01:00
Travis Ralston
ee2c216c4d Clean up TODO comments for new room list
All relevant TODOs should still be present, and reference an issue for easy finding.
2020-06-28 20:03:04 -06:00
Travis Ralston
67cc84d00d Merge branch 'develop' into travis/room-list/preview-copy 2020-06-26 07:29:49 -06:00
Travis Ralston
acf56559e1 Introduce an entirely new system for handling message preview copy
This reverts earlier changes made to textForEvent as they are no longer needed.

This also implements an entire tree of textForEvent-like behaviour as the previews need to be different, which is easiest done with its own stack.
2020-06-25 16:26:49 -06:00
Travis Ralston
5efa5d2c80 Implement new resize handle for dogfooding
Smaller handle width, small shadow on the top of the show more button if there's more rooms to be shown. The resize handle also only shows when you're hovering in the area now.

The original design called for the shadow to show up only if the user is cutting a tile or dragging, however that is complicated implementation-wise. For speed and encouraging a dogfooding pattern we're going ahead with this behaviour instead.
2020-06-25 10:08:44 -06:00
Travis Ralston
37a415693f Allow the user to resize the new sublists to 1 tile
For dogfooding https://github.com/vector-im/riot-web/issues/14137

To change the default: `localStorage.setItem("mx_dogfood_rl_defTiles", 4);`
2020-06-24 20:08:26 -06:00
Travis Ralston
752b2acc56 Move MessagePreviewStore into the room list namespace 2020-06-24 19:51:55 -06:00
Travis Ralston
bb9999a414
Merge pull request #4817 from matrix-org/travis/room-list/sticky-room-fixes
Fix sticky room disappearing/jumping in search results
2020-06-24 10:55:14 -06:00
Travis Ralston
c047a76f1d Update the filtering for the right tag 2020-06-24 10:36:43 -06:00
Travis Ralston
380aed4244 Update profile information in User Menu
Fixes https://github.com/vector-im/riot-web/issues/14158 (we needed an HTTP avatar URL)
Fixes https://github.com/vector-im/riot-web/issues/14159
Fixes https://github.com/vector-im/riot-web/issues/14157
Also fixes an issue where it wasn't updating automatically when the user changed their profile info.

This is all achieved through a new OwnProfileStore which does the heavy lifting, as we have to keep at least 2 components updated.
2020-06-23 21:01:50 -06:00
Travis Ralston
f93d67fc65 Fix sticky room disappearing/jumping in search results
Fixes https://github.com/vector-im/riot-web/issues/14124
Fixes https://github.com/vector-im/riot-web/issues/14154 (which was technically supposed to say that the sticky room when filtering was always last)

This is all a bit complicated, but the theory is that we end up with a stable list even through filtering. There's some notes within, though I suspect it'll be difficult to understand :(
2020-06-23 16:49:39 -06:00
Jorik Schellekens
7699aafcaf Use new eslint package- fix lint issues in ts and js 2020-06-23 17:01:19 +01:00
J. Ryan Stinnett
3829362754 Fix up merge to develop 2020-06-23 15:24:02 +01:00
RiotRobot
6161f95434 Merge branch 'master' into develop 2020-06-23 15:18:35 +01:00
Travis Ralston
115c850d35 Use the correct timeline reference for message previews
Fixes https://github.com/vector-im/riot-web/issues/14083 (hopefully)

This is the same logic used by `Unread.js`, so should be correct.
2020-06-22 15:57:13 -06:00
Travis Ralston
fc5ee64fce Fix read receipt handling in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14064
Fixes https://github.com/vector-im/riot-web/issues/14082

Turns out the event doesn't reference a room, so we need to use the accompanied room reference instead.
2020-06-22 15:12:30 -06:00
David Baker
d1caadec9f Add null check 2020-06-19 20:07:20 +01:00
David Baker
a82253ec96 Merge remote-tracking branch 'origin/develop' into dbkr/support_no_ssss 2020-06-19 17:18:48 +01:00
David Baker
3f936a1fe4 Merge remote-tracking branch 'origin/develop' into dbkr/support_no_ssss 2020-06-19 16:50:29 +01:00
David Baker
9b9e6e04e3 Merge remote-tracking branch 'origin/develop' into dbkr/fix_verification_race 2020-06-18 15:12:06 +01:00
David Baker
e4d824839a Revert "Use recovery keys over passphrases" 2020-06-18 15:02:03 +01:00
Jorik Schellekens
ba0bc8f29c Resolve "The Great Conflict" 2020-06-18 14:55:24 +01:00
Jorik Schellekens
291997421b Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into joriks/semicolon 2020-06-18 14:54:20 +01:00
David Baker
5b27a570a8
Merge pull request #4790 from matrix-org/revert-4686-dbkr/recovery_keys_over_passphrases
Revert "Use recovery keys over passphrases"
2020-06-18 14:51:22 +01:00
Travis Ralston
b857c9d199
Merge pull request #4786 from matrix-org/travis/room-list/show-n-reliability
Fix show less/more button occluding the list automatically
2020-06-18 07:46:13 -06:00
Jorik Schellekens
05d0309081 Lint a few semicolons 2020-06-18 14:32:43 +01:00
David Baker
e0a34d9dea
Revert "Use recovery keys over passphrases" 2020-06-18 09:35:11 +01:00
Travis Ralston
8db67743f7 Improve room switching in the new room list
For https://github.com/vector-im/riot-web/issues/14034

One of the largest issues with room switching was that we'd regenerate the entire list when the sticky room changes, which is obviously detrimental on larger accounts (and even some medium accounts). To work through this, we simply handle the NewRoom and RoomRemoved causes (used by the sticky room handling) as splices rather than in-place updates.

Overall this leads to a smoother experience as it means we're doing far less calculations and can even opt out of an update if it isn't required, such as a RoomRemoved cause being fired twice - the second one can result in an update not being required, saving render time.

This commit also includes a fix for handling update causes on the sticky room, as the room list loves to print errors when this happens. We don't need to handle any updates because once the sticky room changes it'll get re-added through NewRoom, causing the underlying algorithm to slot it in where needed, effectively handling all the missed updates.
2020-06-17 22:42:01 -06:00
Travis Ralston
245181cf80 Fix show less/more button occluding the list automatically
When the user would click 'show more' they would be presented with a 'show less' button that occluded the last room. 

Similarly, if they resized the list so that all their rooms would be shown and refreshed the page, they would find their last room covered by the button.

This changes the handling so that showAllClick() sets the height to numTiles + button padding, and adjusts the height calculations on render to deal with relative tiles.

This also removes the conditional padding of the resize handle, as we always occupy the 4px of space. It was leading to rooms getting trimmed slightly by the show N button.
2020-06-17 22:09:59 -06:00
Travis Ralston
d2831ffb0c
Merge pull request #4758 from matrix-org/travis/room-list/sticky
Sticky and collapsing headers for new room list
2020-06-17 08:28:38 -06:00
Travis Ralston
07f13f2ece
Merge pull request #4767 from matrix-org/travis/room-list/tombstone
Handle/hide old rooms in the room list
2020-06-17 08:24:27 -06:00
Travis Ralston
3bdf3be3f4
Merge pull request #4769 from matrix-org/travis/room-list/fuzzy-filter
Match fuzzy filtering a bit more reliably in the new room list
2020-06-17 07:15:36 -06:00
Travis Ralston
17f1fdaf6d Include the sticky room when filtering in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14050
2020-06-16 10:59:42 -06:00
Travis Ralston
bc0281ebdd Match fuzzy filtering a bit more reliably in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14054
2020-06-16 08:36:10 -06:00
David Baker
89a72b7685 Take the last request (ie. the most recent) 2020-06-16 14:53:13 +01:00
Travis Ralston
4a74baf99d
Merge pull request #4768 from matrix-org/travis/room-list/better-filter
Match new room list's text search to old room list
2020-06-15 20:28:31 -06:00
Travis Ralston
f8828014f1 Match new room list's text search to old room list
Fixes https://github.com/vector-im/riot-web/issues/14042
2020-06-15 20:19:16 -06:00
Travis Ralston
776e63c0d8 Handle/hide old rooms in the room list
Fixes https://github.com/vector-im/riot-web/issues/14003
2020-06-15 20:11:06 -06:00
Travis Ralston
e9afb4b86e Fix ordering of recent rooms in the new room list
Fixes https://github.com/vector-im/riot-web/issues/14009
2020-06-15 20:04:32 -06:00
Travis Ralston
4186070489 Support list collapsing and jumping
Fixes https://github.com/vector-im/riot-web/issues/14036
2020-06-15 19:47:43 -06:00
David Baker
d90645f0ea add comment 2020-06-15 17:46:22 +01:00
David Baker
0618d82ccb Look for existing verification requests after login
Fixes https://github.com/vector-im/riot-web/issues/13462
Requires https://github.com/matrix-org/matrix-js-sdk/pull/1405
2020-06-15 17:41:22 +01:00
David Baker
404798d27c Merge remote-tracking branch 'origin/develop' into dbkr/support_no_ssss 2020-06-15 11:36:39 +01:00
David Baker
8ebae4c3b6
Merge pull request #4686 from matrix-org/dbkr/recovery_keys_over_passphrases
Use recovery keys over passphrases
2020-06-15 11:30:30 +01:00
Travis Ralston
6de6d94f7c Fix return type 2020-06-12 08:40:08 -06:00
Travis Ralston
6b54c3a492 Throw if the update cause is unsupported 2020-06-12 08:39:59 -06:00
Travis Ralston
fd029e8e80 Dumb down list algorithms in favour of smarter tags
This commit is a bit involved, as it factors the tag specific handling out of `/list-ordering` (and moves the `Algorithm` class one higher as a result), leaving it in the `Algorithm`. The algorithms for list ordering now only know how to handle a single tag, and this is managed by the `Algorithm` class - which is also no longer the base class for the list ordering. The list ordering algorithms now inherit from a generic `OrderingAlgorithm` base class which handles some rudimentary things.

Overall the logic hasn't changed much: the tag-specific stuff has been moved into the `Algorithm`, and the list ordering algorithms essentially just removed the iteration on tags. The `RoomListStore2` still shovels a bunch of information over to the `Algorithm`, which can lead to an awkward code flow however this commit is meant to keep the number of surfaces touched to a minimum.

The RoomListStore has also gained the ability to set per-list (tag) ordering and sorting, which is required for the new room list. The assumption that it defaults from the account-level settings is not reviewed by design, yet. This decision is deferred.
2020-06-11 22:02:09 -06:00
Travis Ralston
52b26deb2e Move room list store docs to docs directory
This pulls it away from the code, but the code is sufficiently involved enough where it doesn't need another file near it.
2020-06-11 16:56:12 -06:00
Travis Ralston
966e2cad7e Update documentation for how this refactoring will go 2020-06-11 16:52:47 -06:00
Travis Ralston
853ae6d5bf misc code quality improvements 2020-06-10 18:56:21 -06:00
Travis Ralston
6ccb566587 Show message previews on the new room list tiles
They're heavily cached.
2020-06-10 18:37:59 -06:00
Travis Ralston
a3391d9a08 Merge branch 'develop' into travis/room-list/hover-state 2020-06-10 07:42:41 -06:00
Travis Ralston
78e1db9d30
Merge pull request #4741 from matrix-org/travis/room-list/resize-handle
Update resize handle for new designs in new room list
2020-06-10 07:40:34 -06:00
Travis Ralston
a4ea5b5902
Merge pull request #4740 from matrix-org/travis/room-list/stability-1
Improve general stability in the new room list
2020-06-10 07:40:07 -06:00
Travis Ralston
111394df6d Add hover states and basic context menu to new room list
The 'sort by' radio buttons are blocked by https://github.com/matrix-org/matrix-react-sdk/pull/4731 as it contains the styles needed.

The 'unread rooms' checkbox is intentionally not hooked up. This is a more complicated refactoring that needs to be done.

The message preview checkbox works, though the previews remain hardcoded in this change. The primary intent of this change is to have a good enough context menu and the hover states.

The hover states are as described in the design.
2020-06-09 21:12:49 -06:00
Travis Ralston
5f8b7187cf Update resize handle for new designs
The diff should have information on what this does and how it is supposed to work.
2020-06-09 19:48:31 -06:00
Travis Ralston
84174cc440 Remove 1 extra line 2020-06-09 15:30:03 -06:00
Travis Ralston
c360800631 Add token.remove() handling to room list temp proxy
Fixes https://github.com/vector-im/riot-web/issues/13930
2020-06-09 15:26:13 -06:00
Travis Ralston
db23aaad83 Destroy old CommunityFilterConditions when they aren't needed
Fixes https://github.com/vector-im/riot-web/issues/13971
2020-06-09 15:22:37 -06:00
Travis Ralston
b5f9c4ba8a Merge branch 'develop' into travis/room-list/breadcrumbs 2020-06-09 08:12:56 -06:00
Travis Ralston
9377fa513f Merge branch 'develop' into travis/room-list/breadcrumbs 2020-06-09 08:11:08 -06:00
Travis Ralston
eefc40e0f8 Use IDestroyable instead of IDisposable
For consistency within our project
2020-06-09 08:08:47 -06:00
Travis Ralston
3fcd5505b3 Support prioritized room list filters
This is to fix an issue where when using both the community filter panel and the search box it's an AND rather than further refining the results.

This makes the search box further refine the community filter panel results.
2020-06-08 21:38:56 -06:00
Travis Ralston
708c65cd96 Disable new breadcrumb store when old room list is in use 2020-06-08 19:08:18 -06:00
Travis Ralston
5083811deb Appease the tests 2020-06-08 18:26:43 -06:00
Travis Ralston
eff97e6c20 Fix the tests 2020-06-08 18:18:34 -06:00
Travis Ralston
0354bf9b6d Reimplement breadcrumbs for new room list
This all-new component handles breadcrumbs a bit more smoothly for the app by always listening to changes even if the component isn't present. This allows the breadcrumbs to remain up to date for when the user re-enables breadcrumbs.

The new behaviour is that we turn breadcrumbs on once the user has a room, and we don't turn it back off for them.

This also introduces a new animation which is more stable and not laggy, though instead of sliding the breadcrumbs pop. This might be undesirable - to be reviewed.
2020-06-08 17:11:58 -06:00
Travis Ralston
000c92a53f Merge branch 'develop' into travis/room-list/css-layout 2020-06-08 09:40:21 -06:00
Travis Ralston
760333a0ae Move function to a private function 2020-06-07 13:08:25 -06:00
Travis Ralston
a7fe7cb28d Merge remote-tracking branch 'origin/develop' into travis/room-list/sticky 2020-06-07 13:06:30 -06:00
Travis Ralston
9b928b5a5d Handle remaining cases for room updates in new room list
For https://github.com/vector-im/riot-web/issues/13635

This adds support for:
* Tag changes
* DM changes
* Marking our own rooms as read
* Our own membership changes

The remaining branch we didn't need was the alternate 'new room' branch, so it was removed.

This is not optimized - optimization is deferred.
2020-06-05 20:12:32 -06:00
Travis Ralston
0bb1eefdea Remove view_room listener as it isn't needed
We use the RoomViewStore
2020-06-05 19:47:15 -06:00
Travis Ralston
6548748d7c Introduce sticky rooms to the new room list
Originally this was intended to be done only in the importance algorithm, however it is clear that all algorithms will need to deal with this. As such, it has been put into the base class to deal with as we may override it in the future. 

This commit should be self-documenting enough to describe what is going on, though the major highlight is that the handling of the sticky room is done by lying to the underlying algorithm.

This has not been optimized for performance yet.

For https://github.com/vector-im/riot-web/issues/13635
2020-06-05 18:44:38 -06:00
Travis Ralston
ea6b0a60ab Merge branch 'develop' into travis/room-list/css-layout 2020-06-05 13:19:00 -06:00
Travis Ralston
e93a41c5fb Minor clarity 2020-06-05 13:14:44 -06:00
David Baker
68e555a0c6 Support accounts with cross signing but no SSSS
At least at the login stage.

Fixes https://github.com/vector-im/riot-web/issues/13894
2020-06-05 16:40:20 +01:00
David Baker
b82a893a79 Merge remote-tracking branch 'origin/develop' into dbkr/recovery_keys_over_passphrases 2020-06-05 16:00:43 +01:00
Travis Ralston
0c15b2bdb6 Simple structuring of the room list itself
This covers the larger parts of the design, but doesn't deal with the nuances of hover states, badge sizing, etc.
2020-06-04 21:21:04 -06:00
Travis Ralston
83df79aab9 Try variable resizing 2020-06-04 09:19:03 -06:00
Travis Ralston
dbf996439b Wedge t3chguy's resizer prototype into the sublist 2020-06-03 21:17:51 -06:00
Travis Ralston
c07b5ebe9a Initial experiments with resizing of room lists 2020-06-03 21:17:18 -06:00
Travis Ralston
bc2fbefb5c Remove iteratorToArray 2020-06-03 11:29:06 -06:00
David Baker
b83ecb1781 Merge remote-tracking branch 'origin/develop' into dbkr/recovery_keys_over_passphrases 2020-06-02 18:53:54 +01:00
David Baker
5624cf5ceb Add option to reset keys to the encryption setup screen 2020-06-02 17:55:27 +01:00
David Baker
e06ba2003b Prompt for recovery key on login rather than passphrase
Only show passphrase options at all if the user has a passphrase on
their SSSS key.
2020-06-02 16:32:15 +01:00
Travis Ralston
73a8e77d32 Add initial filtering support to new room list
For https://github.com/vector-im/riot-web/issues/13635

This is an incomplete implementation and is mostly dumped in this state for review purposes. The remainder of the features/bugs are expected to be in more bite-sized chunks.

This exposes the RoomListStore on the window for easy access to things like the new filter functions (used in debugging).

This also adds initial handling of "new rooms" to the client, though the support is poor.

Known bugs:
* [ ] Regenerates the entire room list when a new room is seen.
* [ ] Doesn't handle 2+ filters at the same time very well (see gif. will need a priority/ordering of some sort).
* [ ] Doesn't handle room order changes within a tag yet, despite the docs implying it does.
2020-06-01 16:49:22 -06:00
Michael Telatynski
0242b6f3f3
Merge pull request #4624 from matrix-org/t3chguy/toasts3_2
Migrate Banners to Toasts
2020-05-28 18:21:28 +01:00
Michael Telatynski
0fd5714e21
Merge pull request #4606 from matrix-org/t3chguy/peeking-races
Fix room alias lookup vs peeking race condition
2020-05-27 17:07:12 +01:00
Michael Telatynski
efa47f1a8e Change out debug
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-27 12:02:51 +01:00
Michael Telatynski
3dade4e759 tweak
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-27 11:48:48 +01:00
Michael Telatynski
254ed4b1b6 Add debug lined to figure out e2e test failure
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-27 11:33:42 +01:00
Travis Ralston
a9c54153ee Update badge counts in new room list as needed 2020-05-26 14:16:33 -06:00
Bruno Windels
cfe5173235 use connection error to detect network problem 2020-05-26 15:23:12 +02:00
Bruno Windels
d45a597528
Merge pull request #4645 from matrix-org/bwindels/addloggingforfailtojoinroom
Add logging when room join fails
2020-05-26 13:22:22 +00:00
Bruno Windels
f1282179fb add logging when we fail to join a room 2020-05-26 14:58:09 +02:00
Michael Telatynski
22dba5f794 Merge branches 't3chguy/toasts3' and 't3chguy/toasts3_1' of github.com:matrix-org/matrix-react-sdk into t3chguy/toasts3_1 2020-05-23 11:22:19 +01:00
Michael Telatynski
d29ba5b597 fix priority sorting to highest first
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-23 09:02:35 +01:00
Michael Telatynski
49c0748990 delint and i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-22 14:32:41 +01:00
Michael Telatynski
c464abaa49 Iterate toast count indicator more logically
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-22 14:28:01 +01:00
Michael Telatynski
dc37469808 Convert ToastContainer and ToastStore to Typescript
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-22 12:47:40 +01:00
Michael Telatynski
37bd59bf90 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/peeking-races 2020-05-22 11:18:19 +01:00
Michael Telatynski
67ffe94df4 Fix typo and improve error context
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-22 11:18:14 +01:00
Travis Ralston
e3c0b47116 Hyphenize algorithm directories 2020-05-21 11:56:04 -06:00
Travis Ralston
a11985f239 Which component? The room list! 2020-05-21 11:54:38 -06:00
Michael Telatynski
af2eed2228 Fix room alias lookup vs peeking race condition
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-19 13:18:50 +01:00
Travis Ralston
21e471375e Revert "Add temporary timing functions to old RoomListStore"
This reverts commit 82b55ffd77.
2020-05-14 14:20:43 -06:00
Travis Ralston
5cfe29de66 Update AsyncStore's docs to be slightly more clear 2020-05-14 14:20:01 -06:00
Travis Ralston
b7ba9b3c41 Replace ChaoticAlgorithm with NaturalAlgorithm for list behaviour 2020-05-14 14:16:26 -06:00
Travis Ralston
91a997da14 Replace ChaoticAlgorithm for tag sorting with deterministic behaviour
aka: implement the algorithms.
2020-05-14 14:06:48 -06:00
Travis Ralston
6cb1efc1a4 Use the new TS dispatcher 2020-05-14 13:45:17 -06:00
Travis Ralston
2b4c19e9ba Merge branch 'travis/dispatcher-types' into travis/room-list-2 2020-05-14 13:40:37 -06:00
Travis Ralston
8e047c3731 Update README for room list store 2020-05-14 13:26:17 -06:00
Travis Ralston
aafbd7f208 Update misc documentation and spell indices correctly 2020-05-14 13:01:51 -06:00
Travis Ralston
9f0810240f Clean up imports and other minor lints 2020-05-14 12:46:16 -06:00
Travis Ralston
e88788f4e9 Handle event decryption too 2020-05-14 12:46:16 -06:00
Travis Ralston
4a0d14e322 Make missing rooms throw instead
For now at least. We shouldn't encounter this case until we get around to adding support for newly-joined rooms.
2020-05-14 12:46:16 -06:00
Travis Ralston
e1fab9a5b6 Work out the new category index for each room update
See comments within for details on what this means.
2020-05-14 12:46:16 -06:00
Travis Ralston
5dda7f02cf Early handling of dispatched events
A possible approach to handling the various triggers for recategorizing rooms.
2020-05-14 12:46:16 -06:00
Travis Ralston
ecf8090b75 Handle DMs 2020-05-14 12:44:49 -06:00
Travis Ralston
d244eeb5d5 Break up algorithms and use the new layering
Sorting and ordering has now been split apart. The ImportanceAlgorithm also finally makes use of the sorting.

So far metrics look okay at 3ms for a simple account, though this could potentially get worse due to the multiple loops involved (one for tags, one for categories, one for ordering). We might be able to feed a whole list of rooms into the thing and have it regenerate the lists on demand.
2020-05-14 12:44:49 -06:00
Travis Ralston
e7fffee175 Remove the need for a tag manager
Instead putting the tag handling in the Algorithm class
2020-05-14 12:44:49 -06:00
Travis Ralston
9c0422691a Add another thought
Maybe we can speed up the algorithm if we know why we're doing the update.
2020-05-14 12:44:49 -06:00
Travis Ralston
00d400b516 Possible framework for a proof of concept
This is the fruits of about 3 attempts to write code that works. None of those attempts are here, but how edition 4 could work is at least documented now.
2020-05-14 12:44:49 -06:00
Travis Ralston
becaddeb80 Categorize rooms by effective membership 2020-05-14 12:44:49 -06:00
Travis Ralston
861268d39f Invent an AsyncStore and use it for room lists
This is to get around the problem of a slow dispatch loop. Instead of slowing the whole app down to deal with room lists, we'll just raise events to say we're ready.

Based upon the EventEmitter class.
2020-05-14 12:44:29 -06:00
Travis Ralston
08419d195e Initial breakout for room list rewrite
This does a number of things (sorry):
* Estimates the type changes needed to the dispatcher (later to be replaced by https://github.com/matrix-org/matrix-react-sdk/pull/4593)
* Sets up the stack for a whole new room list store, and later components for usage.
* Create a proxy class to ensure the app still functions as expected when the various stores are enabled/disabled
* Demonstrates a possible structure for algorithms
2020-05-14 12:44:29 -06:00
Travis Ralston
82b55ffd77 Add temporary timing functions to old RoomListStore
This is to identify how bad of a state we're in to start with.
2020-05-14 12:41:37 -06:00
Travis Ralston
90a898d03f Move dispatcher into a subdirectory
We're expecting to have a whole bunch of types for the dispatched payloads, so pull the thing into a directory we can throw them in.
2020-05-13 21:07:50 -06:00
Michael Telatynski
fa0f704b56 clear tag panel selection if the community selected is left
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-05-08 00:05:16 +01:00
David Baker
0b5691c003 Fix right panel hiding when viewing room member
If you clicked on the header button whilst the right panel was
showing a room member, it would NPE because there was no
refireParams.member. It fires the same phase with no refireParams to
toggle the panel visibility (apparently), so detect that case.

Fixes https://github.com/vector-im/riot-web/issues/13571
2020-05-07 09:43:14 +01:00
David Baker
bc6aeef824 Guard against race when waiting for cross-signing to be ready
Check to see if cross-signing is already set up after a verification
is done to make sure it doesn't race and we end up waiting forever.
2020-05-01 10:58:00 +01:00
David Baker
124740a63c Wait for user to be verified in e2e setup
Wait for our user to become verified and cross-signing to be ready
before declaring that we're finsihed, otherwise we could end up
prompting the user to verify again if we just wait for the verification
itself to complete.

Fixes part of https://github.com/vector-im/riot-web/issues/13464
2020-04-30 22:08:00 +01:00
David Baker
325e1f9c4e Add jsdoc explaining ordering behaviour 2020-04-29 15:10:23 +01:00
David Baker
1291a63b98 Make new device toasts appear above review toasts
...but below incoming verification toasts, which means we now need
to actually handle priority insertion correctly. Oh well.

Fixes https://github.com/vector-im/riot-web/issues/13442
2020-04-29 14:49:30 +01:00
Travis Ralston
d8a5ba9b14 Merge branch 'develop' into travis/moar-jitsi 2020-04-20 09:21:48 -06:00
Travis Ralston
972baa881b
Revert "Fix Filepanel scroll position state lost when room is changed" 2020-04-19 19:14:08 -06:00
Travis Ralston
d910eb4d57 Merge branch 'develop' into thobyv/make-filepanel-remember-scroll-position 2020-04-17 15:10:12 -06:00
Michael Telatynski
49e1e6e59f null-guard MatrixClientPeg in RoomViewStore
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-04-15 17:31:45 +01:00
Travis Ralston
4fe16b1b84
Merge branch 'develop' into travis/moar-jitsi 2020-04-14 12:57:28 -06:00
thobyv-kismat
719165c67f fix file panel scroll position lost on room change 2020-04-11 04:03:32 +01:00
thobyv-kismat
8cf6a8c311 refactor RoomScrollStateStore to accomodate scrollmaps for file/notif panel 2020-04-11 02:59:26 +01:00
Travis Ralston
b4b0c4c6df Add comments to highlight where we'll need m.widget support
For https://github.com/vector-im/riot-web/issues/13111
2020-04-09 15:14:07 -06:00
Travis Ralston
dc92f557fd Support m.jitsi-typed widgets as Jitsi widgets
Fixes https://github.com/vector-im/riot-web/issues/9268
2020-04-09 15:11:57 -06:00
Zoe
0102876e40 Re-request room keys after auth 2020-04-03 11:49:08 +01:00
Michael Telatynski
a2a9dc6cd0 Fix peeking keeping two timeline update mechanisms in play
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-31 10:37:56 +01:00
Bruno Windels
abf12a3ddf Show EncryptionPanel straight away when there is an ongoing verification request for a user 2020-03-26 17:31:31 +01:00
Bruno Windels
7d4e498257 fix lint 2020-03-24 17:03:40 +01:00
Bruno Windels
4ff847c8a3 put CompleteSecurity state management in store
and split off a child component (SetupCrossSigningBody) that can
be reused from the "Verify this session" toast.
2020-03-24 16:10:15 +01:00
David Baker
eae690f3ef Always display verification request toasts on top
As they're interactive and time-sensitive.

Fixes https://github.com/vector-im/riot-web/issues/12141
2020-03-23 15:52:59 +00:00
Michael Telatynski
1c2c2cbc7c delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-20 00:20:55 +00:00
Michael Telatynski
2b40bb905a Add shortcut CmdOrCtrl+. to toggle right panel. Gets rid of forced-update on right panel changes which may not be the ones we care about.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-20 00:18:24 +00:00
Michael Telatynski
fb46258528 we don't do mx_fadable anymore so get rid of broken RLS disabling
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-19 13:57:36 +00:00
Travis Ralston
8e3fea9d0f Use an algorithmic comparator for room list ops
Not all algorithms are timestamp based.
2020-03-04 12:09:05 -07:00
Travis Ralston
80b44f0292 Always calculate the category of a room
All the update triggers for the RoomListStore go through the `setRoomCategory` function, so by returning early we're not actually calculating where a room should be in the list.
2020-03-04 12:05:47 -07:00
Michael Telatynski
8ec83d4a77 Revert to manual sorting for custom tag rooms 2020-03-02 11:20:28 +00:00
Michael Telatynski
48dc671bcb
Merge pull request #4085 from matrix-org/t3chguy/alpha_room_list
Room List sorting algorithms
2020-02-28 12:04:10 +00:00
Michael Telatynski
4480abf09c Clear selected tags when disabling tag panel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-27 12:52:22 +00:00
Michael Telatynski
3ad8b6e9cc Use RoomList.orderAlphabetically as the inverse of RoomList.orderByRecents for migration
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-26 23:05:08 +00:00
Michael Telatynski
a1908a208e Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/alpha_room_list
 Conflicts:
	src/components/views/rooms/RoomList.js
	src/stores/RoomListStore.js
2020-02-26 23:02:06 +00:00
Travis Ralston
866ed68615 Ensure DMs tagged outside of account data work in the invite dialog
Fixes https://github.com/vector-im/riot-web/issues/12418

Includes a refactor so we don't need to litter the code with the same magic string for DM tags.
2020-02-24 19:43:49 -07:00
Michael Telatynski
f074e85863 tidy up
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-19 16:35:05 +00:00
Michael Telatynski
5a31b308cd remove unused clause
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-19 15:09:05 +00:00
Michael Telatynski
d1503d8a65 fix edge case
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-19 14:55:49 +00:00
Michael Telatynski
a6edc34e97 Iterate things
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-19 14:52:00 +00:00
Michael Telatynski
932c9b3106 First attempt alpha room list sorting
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-18 14:55:12 +00:00
J. Ryan Stinnett
c916ef4534 Only emit in RoomViewStore when state actually changes
This adds a shallow state check to attempt to only emit a store update when
something actually changes.

Fixes https://github.com/vector-im/riot-web/issues/12256
2020-02-06 17:57:17 +00:00
David Baker
b96ad4a4f0 Don't peek until the matrix client is ready
When the client loaded, we'd load the room view which would try to
get a room object from the client, fail because the client wasn't
ready, think it's because the user wasn't joined to the room and
start peeking instead.

Coupled with the bug fixed by https://github.com/matrix-org/matrix-js-sdk/pull/1188
this would have caused https://github.com/vector-im/riot-web/issues/11120
2020-01-29 15:07:43 +00:00
Bruno Windels
716c8ba68f pr feedback 2020-01-17 17:02:31 +01:00
Bruno Windels
5556cb5749 Merge branch 'develop' into bwindels/verification-right-panel 2020-01-17 16:02:51 +01:00
David Baker
9e43abaf3a Toasts for new, unverified sessions
Fixes https://github.com/vector-im/riot-web/issues/11218
2020-01-17 11:43:35 +00:00
David Baker
83b1505401 Add a ToastStore
To store toast. Rather than them being stored in the state of the
ToastContainer component, they now have a dedicated store. This mostly
fixes problems involving showing toasts when the app loaded because
we would otherwise have a race condition where something tries to
show a toast before the ToastContainer is mounted.
2020-01-16 20:23:47 +00:00
Travis Ralston
d1fcef1211 Merge branch 'develop' into bwindels/verification-right-panel 2020-01-16 13:23:32 -07:00
Travis Ralston
dc914774fb Delete files that were conflicting in the merge and deleted on develop 2020-01-09 14:19:19 -07:00
Travis Ralston
fde32f13a5 [CONFLICT CHUNKS] Merge branch 'develop' into travis/sourcemaps-develop 2020-01-09 14:15:09 -07:00
Travis Ralston
59f608ffd6
Merge pull request #3761 from matrix-org/travis/babel7-wp-es6-export
Convert CommonJS exports to ES6 exports
2020-01-08 09:09:11 -07:00
Michael Telatynski
d31c863563 Remove all usages of slate in favour of CIDER
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-01-06 00:15:48 +00:00
Bruno Windels
d8a38e6b74 WIP 2020-01-03 13:42:17 +01:00
Travis Ralston
042bd35d79 Fix MatrixClientPeg imports 2019-12-22 21:15:54 -07:00
Travis Ralston
d56f0f2a25 Convert many imports to handle ES6 exports
Reliant upon https://github.com/matrix-org/matrix-react-sdk/pull/3761
2019-12-22 21:04:42 -07:00
Travis Ralston
344dac4fb9 Convert CommonJS exports to ES6-compatible exports
We use `export default` begrudgingly here. Ideally we'd use just `export`, though this entire SDK expects things to be exported as a default. Instead of breaking everything, we'll sacrifice our export pattern for a smaller diff - a later commit can always do the default export -> regular export conversion.
2019-12-22 21:01:02 -07:00
Michael Telatynski
1c31fd3413 Apply new design to highlighted tags and add toggle mechanic 2019-12-19 16:54:30 +00:00
Travis Ralston
16181ff0ed Fix right panel for multiple member info viewings
Fixes https://github.com/vector-im/riot-web/issues/11663

Member info is special because it has parameters associated with it. What was happening was the RightPanelStore was seeing that it was already on member info and deciding to hide the pane instead. What we do now is consider any phase change with parameters (such as the user to pass to member info) as a proper phase change.
2019-12-17 09:47:06 -07:00
Travis Ralston
b93cadf4d1 Reset the right panel when changing rooms/groups
This is to prevent the member info from staying open, which could explode if the user isn't in the room you're switching to.
2019-12-10 09:58:44 -07:00
Travis Ralston
94ae06db4d Fix cold open of the RightPanel directly to MemberInfo
This requires us to track some of the phase's state in the RightPanelStore, which is not great - trying to get it through the app is a bit difficult.
2019-12-06 15:05:02 -07:00
Travis Ralston
814c408e23 Disable the right panel when the app asks us to
Currently this is only used in the GroupView and for forwarding messages.
2019-12-06 14:18:18 -07:00
Travis Ralston
75c32a2f02 Fix a bug where the icons need to be clicked twice after reload
Clicking on the member icon was fine, but clicking on the file panel wouldn't bring it up - it had to be clicked a second time to actually show the panel.
2019-12-05 23:50:19 -07:00
Travis Ralston
4873b526df Ensure the right panel stays the same between room changes if possible
Fixes https://github.com/vector-im/riot-web/issues/10149
2019-12-05 23:48:05 -07:00
Travis Ralston
ca0c393783 Use new right panel store for header buttons
This introduces a new dispatch action (unused, so far) and routes the buttons towards the RightPanelStore for processing.
2019-12-05 23:28:06 -07:00
Travis Ralston
6e882251bd Break the right panel completely
This lays a foundation for redirecting all the traffic through the new store, but for now the core parts of the app need to stop caring if the right panel is open.
2019-12-05 17:47:18 -07:00
Travis Ralston
5253f29928 Build out a store for the right panel state machine
This should make it easier to funnel the expected behaviour through a central block of code.
2019-12-05 15:31:01 -07:00
Travis Ralston
f4b1c4f360 Remove useless file 2019-11-29 15:13:46 -07:00
Travis Ralston
24843cf25e Convert Velociraptor to a class 2019-11-28 19:36:30 -07:00
Michael Telatynski
5c172a383d Merge branch 't3chguy/remove_bluebird_2' of https://github.com/matrix-org/matrix-react-sdk into t3chguy/remove_bluebird
 Conflicts:
	src/components/views/right_panel/UserInfo.js
2019-11-18 10:36:43 +00:00
Michael Telatynski
d4d51dc61f Rip out the remainder of Bluebird 2019-11-18 10:03:05 +00:00
Travis Ralston
3dcc92b79d Add some logging/recovery for lost rooms
Zero inserts is not normal, so we apply the same recovery technique from the categorization logic above this block: insert it to be the very first room and hope that someone complains that the room is ordered incorrectly.

There's some additional logging to try and identify what went wrong because it should definitely be inserted. The `!== 1` check is not supposed to be called, ever.

Logging for https://github.com/vector-im/riot-web/issues/11303
2019-11-12 15:39:03 -07:00
Travis Ralston
fa6e02fafb Revert "Add some logging/recovery for lost rooms"
This reverts commit 1aa0ab13e6.
2019-11-12 15:38:45 -07:00
Travis Ralston
1aa0ab13e6 Add some logging/recovery for lost rooms
Zero inserts is not normal, so we apply the same recovery technique from the categorization logic above this block: insert it to be the very first room and hope that someone complains that the room is ordered incorrectly.

There's some additional logging to try and identify what went wrong because it should definitely be inserted. The `!== 1` check is not supposed to be called, ever.

Logging for https://github.com/vector-im/riot-web/issues/11303
2019-11-12 15:38:29 -07:00
J. Ryan Stinnett
3f2b77189e Simplify dispatch blocks 2019-11-12 13:29:01 +00:00
J. Ryan Stinnett
d72dedb0ce Cache room alias to room ID mapping in memory
This adds very basic cache (literally just a `Map` for now) to store room alias
to room ID mappings. The improves the perceived performance of Riot when
switching rooms via browser navigation (back / forward), as we no longer try to
resolve the room alias every time.

The cache is only in memory, so reloading manually or as part of the clear cache
process will start afresh.

Fixes https://github.com/vector-im/riot-web/issues/10020
2019-11-12 11:54:41 +00:00
Michael Telatynski
3fdaeea3a2 allow rooms we were banned from into Historical also
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-15 22:24:23 +01:00
Michael Telatynski
4fb4c5b744 Only put a room in Historical if === 'leave' not peeked
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-15 22:19:07 +01:00
Michael Telatynski
ef2ff31a46 Fix replying from search results for this and all rooms
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-09 09:34:08 +01:00
Michael Telatynski
cd6a980c7e Only Destroy the expected persistent widget, not *ANY*
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-22 16:57:51 +01:00
Travis Ralston
42e6287bdb Implement basic soft logout handling
Fixes https://github.com/vector-im/riot-web/issues/10235

CSS and copy are left as an exercise for a later iteration.

Login page handling is left for https://github.com/vector-im/riot-web/issues/10236

This implementation reuses as much of the Lifecycle flow as it can without causing problems. Most importantly, it requires https://github.com/matrix-org/matrix-js-sdk/pull/975 to be able to detect a soft logout and react to it. When it comes time to starting/stopping the Lifecycle, additional parameters are provided so that the auxiliary services can (re)start themselves without the client starting to sync.
2019-07-03 16:46:37 -06:00
Travis Ralston
c2ad9d4f53 Attach timer finished state once 2019-06-28 12:29:03 -06:00
Travis Ralston
17ed62de7d Move MessageComposer typing timeout to TypingStore 2019-06-27 10:35:44 -06:00
Travis Ralston
eb1f911d15 Use a Timer 2019-06-27 10:29:27 -06:00
Travis Ralston
67ecf9db62 expireMs -> expireTs 2019-06-27 09:44:13 -06:00
Travis Ralston
1546cb2923 You win this time, linter. 2019-06-26 22:40:08 -06:00
Travis Ralston
cd089a3f95 Track the user's own typing state external to the composer
Fixes https://github.com/vector-im/riot-web/issues/9986

There's a few reasons for pushing this out to its own place:
* In future, we might want to move WhoIsTyping here.
* We have multiple composers now, and although they don't send typing notifications, they could (see https://github.com/vector-im/riot-web/issues/10188)
* In future we may have status for where/what the user is typing (https://github.com/matrix-org/matrix-doc/issues/437)
* The composer is complicated enough - it doesn't need to dedupe typing states too.

Note: This makes use of the principles introduced in https://github.com/vector-im/riot-web/issues/8923 and https://github.com/vector-im/riot-web/issues/9090
2019-06-26 22:36:55 -06:00
David Baker
d7509dd4c4 comment consistency 2019-04-08 19:12:04 +01:00