Commit graph

735 commits

Author SHA1 Message Date
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
David Baker
670f6e4f99 Simplify settings dialog CSS
Stop the settings dialogs from requiring special styles on the
mx_Dialog which required passing in a classname from anywhere the
settings dialogs were opened (although this still requires
static=true). Some of the things have now been adopted for all dialogs
(border-radius), others have been moved to within the dialog content.
2019-04-08 16:48:42 +01:00
Travis Ralston
f2b7042a33 misc cleanup 2019-04-04 09:30:15 -06:00
Travis Ralston
10369170ed Use a static prop on Stickerpicker to track the current widget 2019-04-03 17:16:56 -06:00
Travis Ralston
51750cf153 General cleanup of handling for WidgetMessaging instances
When setting, delete the old one. Because delete checks if it exists first, we can safely call this.

The change in FromWidgetPostMessageApi is just something noticed while debugging.
2019-04-01 19:50:05 -06:00
Travis Ralston
a4f76670c4 Don't re-init the stickerpicker unless something actually changes
Fixes https://github.com/vector-im/riot-web/issues/9354

https://github.com/matrix-org/matrix-react-sdk/pull/2801 introduced a change which tried to make sure that when the widget URL was changed that the picker would be re-mounted, however it accidentally introduced a regression. While it effectively did the task it wanted to, it failed to keep the previously-mounted sticker picker alive. This is because the Stickerpicker component is remounted when opened, and the _updateWidget function is called. This results in this.state not having the "current" widget, meaning a URL change is always detected when the component is remounted (room changes, open sticker picker). 

Instead of remounting always, we'll instead track which sticker picker widget is being used out of band. This therefore means that whenever the Stickerpicker component is mounted it doesn't create a whole new widget, and the existing (background) picker can be used. This also fixes the loading screen that people would see when opening the sticker picker after switching rooms, something which the persistent widget stuff is supposed to solve.
2019-04-01 19:48:05 -06:00
Travis Ralston
a5b4d4ba95 Include tag name when warning about rooms running off lists 2019-03-04 10:56:18 -07:00
Travis Ralston
7d9e58b3c3
Merge pull request #2735 from matrix-org/travis/duplicated-people
Don't duplicate direct chats from other tags
2019-03-04 10:34:32 -07:00
Travis Ralston
49f506cef4 More clearly fix issues with room insertion to lists
Instead of having a catch-all insert, try and fix the common cases with a bit more care.
2019-03-01 17:18:16 -07:00
Travis Ralston
43d099836b Always insert rooms into lists when they get lost
Room upgrades, direct chats, etc all end up being lost in these scenarios. Instead of losing them to the list, try and put them into a relevant spot of the list.

Fixes https://github.com/vector-im/riot-web/issues/9020
2019-03-01 15:48:10 -07:00
Travis Ralston
3c2403ca54 Don't duplicate direct chats from other tags
Fixes https://github.com/vector-im/riot-web/issues/8971
2019-03-01 15:29:24 -07:00
Travis Ralston
0978ab3da0 Support stacking dialogs to prevent unmounting
Fixes https://github.com/vector-im/riot-web/issues/8371
2019-02-28 15:55:58 -07:00
Travis Ralston
805676a511 Don't lose invites when multiple are pending 2019-02-28 14:03:28 -07:00
Travis Ralston
872cdaa9b3 Use the already available state for checking if custom tags are enabled 2019-02-28 14:03:28 -07:00
Travis Ralston
b1e16e9f49 Fix stacktrace when starting riot up with rooms
Settings can trigger before we're ready, so don't generate the room list. This also includes a comment to signify to future people that we need to track settings still.
2019-02-28 13:55:20 -07:00
Travis Ralston
a3342a5790 Standardize on "Category" being the canonical term for room list sections 2019-02-28 13:24:05 -07:00
Travis Ralston
bafe59fe28 Appease the linter 2019-02-27 18:29:48 -07:00
Travis Ralston
c908a6cf1e Move complex part of room sorting to a dedicated function
Pretty much cut/pasting it in, as there's not really a whole much to help make the code more understandable here.

This also includes a comment block longer than the code it describes in hopes it explains away the problem of understanding what it does.

Should fix https://github.com/vector-im/riot-web/issues/8861
2019-02-27 15:55:16 -07: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
143f218e08 Make sure direct chat invites are treated as invites
Fixes https://github.com/vector-im/riot-web/issues/8966

The DMRoomMap updates before we accept the invite, so make sure to check if it is an invite before checking if it is a direct chat.
2019-02-26 23:40:07 -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
f82cc28f96
Merge pull request #2701 from matrix-org/travis/fix-invites
Change the room list algo to eagerly delete and carefully insert
2019-02-26 09:26:32 -07:00
Michael Telatynski
8d149575ea Merge branches 'develop' and 't3chguy/room_context_menu_settings' of github.com:matrix-org/matrix-react-sdk into t3chguy/room_context_menu_settings 2019-02-25 23:12:06 +00:00
Michael Telatynski
d4b6ce6932 Apply PR feedback, don't change room to go to its settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-02-25 23:08:51 +00:00
Travis Ralston
3d152da822 Support custom tags in the new algorithm 2019-02-25 13:39:08 -07:00
Travis Ralston
e083d50e31 Merge branch 'develop' into travis/fix-invites 2019-02-25 12:41:19 -07:00
Travis Ralston
5f760fbf4a Change the room list algo to eagerly delete and carefully insert
Previously it made some complicated assumptions about the contexts it was called in (it generally assumed it just had to shuffle rooms between tags and didn't really handle new rooms very well).

The algorithm now eagerly tries to drop rooms from tags and carefully inserts them. The actual insertion logic is mostly untouched: the only part changed is how it handles failure to insert into tag. It shouldn't be possible for this algorithm to completely skip a room unless the tag is empty, so we special case that.

There are several TODO comments to be addressed here. Namely, it doesn't handle manually ordered tags (favourites, custom, etc) and doesn't check if tags are even enabled. Changes in this area are waiting for https://github.com/matrix-org/matrix-react-sdk/pull/2686 to land to take advantage of monitoring the settings flag for tags.
2019-02-24 19:45:23 -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
e7b3cbfdf4 Fix categorization of favourites and new rooms
New rooms (joined, invited, created, etc) were being ignored because they matched the check as soon as the iterator hit a non-recents section. This fixes the check to ensure there's a positive ID on the room being in the tag (or not, in the case of new rooms) before lying to the rest of the function.

Additionally, a fix for favourites has been included to stop the list expanding to fill the void - turns out it was inserting the room twice into the list, and this was breaking the tile rendering. The room sublist would allocate space for the tile, but React would prevent the tile from showing up because of duplicate keys.

Fixes https://github.com/vector-im/riot-web/issues/8868
Fixes https://github.com/vector-im/riot-web/issues/8857 correctly
2019-02-21 19:21:32 -07:00
Travis Ralston
d662dccfba Fix favourites losing rooms and sorting weirdly
By not flagging the room as inserted, we end up sorting it.

Fixes https://github.com/vector-im/riot-web/issues/8857
2019-02-21 09:17:35 -07:00
Travis Ralston
64103b7af4 More micro optimizations to make the hot paths faster 2019-02-19 15:15:39 -07:00
Travis Ralston
561d1f37ec Stick a couple micro optimizations into the setRoomCategory hot path 2019-02-19 14:56:56 -07:00
Travis Ralston
cb15bc968c Remove excessive dispatch binding 2019-02-15 23:41:48 -07:00
Travis Ralston
53fa59f5a4 Remove old debugging code
The algorithm is correctly applied when these are removed.
2019-02-15 23:40:23 -07:00
Travis Ralston
45a415f8bf Protection around lack of room for tests 2019-02-13 20:16:47 -07:00
Travis Ralston
a2a13636ed Don't blow up when rooms have no timelines 2019-02-13 20:02:18 -07:00
Travis Ralston
0c7e0a264b Inline documentation 2019-02-13 19:49:28 -07:00
Travis Ralston
b08ab6cd12 Fix boundary math calculations 2019-02-13 19:35:01 -07:00
Travis Ralston
c0b63f986f Implement a cache on _tsOfNewestEvent: ~75% improvement 2019-02-13 19:16:11 -07:00
Travis Ralston
52f48f7422 Order by timestamp within the categorized room lists
When we load the page, all encrypted events arrive well after we've generated our initial grouping which can cause them to jump to the top of their categories wrongly. For direct chats, this meant that people who don't have a lot of unread messages would see ancient rooms bubbling to the top for no reason after the page has loaded.

We still have to track when the last category change was (ie: when we switched from red -> grey) so that when the category doesn't exist in the list we can insert the room at the right place (the start of the last category when we switch beyond the order expected).
2019-02-13 18:19:18 -07:00
Travis Ralston
821b34b487 React to read receipt changes from ourselves
When a room is read on another device, it should be re-sorted
2019-02-13 17:03:27 -07:00
Travis Ralston
2eb80f793c Try to handle direct chats and tag changes
This is a very blunt approach in that it ignores the sticky room.
2019-02-13 14:22:00 -07:00
Travis Ralston
b741b76797 Handle joins/leaves safely 2019-02-13 14:08:19 -07:00
Travis Ralston
b6c1b50fd9 Early support for improved room algorithm
This changes the approach from regenerating every time there's a change to incrementally fixing the room lists. Additionally, this forces the pin options on for people and implements the sticky room behaviour.

Known bugs include newly joined rooms, invites, etc not sorting correctly.
2019-02-13 13:01:03 -07:00
Bruno Windels
e8533beafb guard custom tags with feature flag 2019-02-07 18:07:30 +00:00
Bruno Windels
c0b9d99385 only import throttle fn 2019-02-07 16:03:12 +00:00