Commit graph

1009 commits

Author SHA1 Message Date
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
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
Bruno Windels
35d9c02ecd throttle custom tags updating in LLP 2019-02-07 15:28:22 +00:00
Bruno Windels
d2ac434545 no need to update tags when app is booting, wait till sync 2019-02-07 14:41:39 +00:00
Bruno Windels
64bb6d2b1f dont remove tags prop from state on logout as we assume its always there 2019-02-07 14:41:19 +00:00
Bruno Windels
8eb1f15ed4 do more explicit check 2019-02-07 12:18:52 +00:00
Bruno Windels
62cdf40a39 dont assume a user has joined all the rooms in a community 2019-02-07 12:11:16 +00:00
Bruno Windels
87ddb8a453
Merge pull request #2575 from matrix-org/bwindels/customtags
Bring back custom tags, also badges on communities
2019-02-07 11:37:17 +00:00
Bruno Windels
52aab2be98 preserve outer this with arrow function 2019-02-07 11:12:34 +00:00
Bruno Windels
7b23fa7a4f implement PR feedback 2019-02-07 10:49:23 +00:00
Bruno Windels
a222ee33df calculate badges for communities in TagOrderStore 2019-02-06 14:29:40 +00:00
Bruno Windels
77db3ca883 calculate badge count for tags as well 2019-02-06 11:02:12 +00:00
Bruno Windels
137ff984c7 rather unsophisticated attempt at trimming common prefixes for avatar 2019-02-05 19:12:34 +00:00
Bruno Windels
579309c2e3 store for custom tags to share state between tag panel & room list 2019-02-05 17:37:25 +00:00
Bruno Windels
3265fe394d don't filter out custom tags anymore 2019-02-05 17:35:05 +00:00
Travis Ralston
eac50aa800 Remove old user and room settings
This takes out the old user and room settings, replacing the paths with the new dialog editions. The labs setting has been removed in order to support this change.

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

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

Some stability testing of the app has been performed to ensure the app still works, however given the scope of this change there is a possibility of some broken functionality.
2019-02-04 13:40:21 -07:00
Travis Ralston
728748c9cd Disable old settings, making tabbed settings the default
This is intentionally not removing the labs flag or other supporting structures of the old settings to make a revert as easy as possible in the event that needs to happen. All of the cruft left behind (TempTab, temp styles, labs flag, old components, etc) will be removed in the very near future.
2019-02-01 10:29:13 -07:00
Travis Ralston
243feb9b13 Early tab structure and profile changes (name/avatar/topic) 2019-01-28 13:54:56 -07:00
Travis Ralston
535d42684f Initial structure for new room settings 2019-01-25 13:09:44 -07:00
J. Ryan Stinnett
29be3ee4b5 Rename login directory to auth 2019-01-21 17:45:55 -06:00
Bruno Windels
8c30d05eb8 Revert "Merge pull request #2348 from matrix-org/bwindels/roomgridview-experimental"
This reverts commit ece5cb1fcc, reversing
changes made to 64a3d2521c.
2019-01-17 10:29:37 +01:00
Bruno Windels
ece5cb1fcc
Merge pull request #2348 from matrix-org/bwindels/roomgridview-experimental
Tiled room UI
2019-01-09 17:25:08 +00:00
Bruno Windels
254427461d fix PR feedback 2019-01-09 12:48:13 +01:00
Travis Ralston
66cd8475b5 Don't reset cached room list values when they are falsey
`unread` and `unread-muted` store booleans in the cache, and can easily be `false`. Without this patch, both of those cached types would be cleared from the object where a later call to `getRoomState` would try and re-populate them. `getRoomState` is supposed to use the cache where possible to avoid making the more expensive calls required to calculate those booleans.

On my account in a test environment, this brings the `generateRoomLists` execution time down from ~250ms to just ~30ms. 

This still does not solve the whole issue, but should solve the more common case of performance woes for people.
2019-01-07 17:46:32 -07:00
Bruno Windels
aedc220b62 fix (some) lint warnings 2019-01-07 16:33:23 +01:00
Bruno Windels
290dc9d8fb Merge branch 'experimental' into bwindels/roomgridview-experimental 2019-01-07 14:17:57 +01:00
Travis Ralston
8017f0a4a1 Merge remote-tracking branch 'origin/experimental' into travis/develop-for-real 2019-01-03 16:00:23 -07:00
David Baker
f928be6f59 Revert "Merge pull request #2395 from matrix-org/dbkr/merge_develop_experimental"
This reverts commit ad47144355.
2019-01-03 15:37:03 -07:00
David Baker
7d161de35b Partial merge of develop to experimental
Does not include #2336 as the file has been moved out from underneath it:
will do this separately
2019-01-03 15:02:58 +00:00
Bruno Windels
532fb6ea78 update comment as well 2018-12-17 13:58:36 +01:00
Bruno Windels
4fffb55cc5 ignore any unknown tags 2018-12-17 13:52:32 +01:00
Bruno Windels
7b6c863377 fix lint 2018-12-14 15:53:52 +01:00
Bruno Windels
04bb13bb7b emit join error over own dispatcher, meh 2018-12-13 13:02:35 +01:00
Bruno Windels
368ef9e8e8 hack so we don't revert to single room view when viewing grid 2018-12-13 13:02:35 +01:00
Bruno Windels
9a24249fb5 emit focus_composer after updating the active room in GroupGridView
also change the active room from there so RoomView is oblivious
to grid view stuff
2018-12-13 13:01:59 +01:00
Bruno Windels
fbfbefe4fe also forward actions from room dispatcher to global one
avoiding replay if the action would be forwarded back to
the same room dispatcher

also some fixing & renaming in OpenRoomsStore
2018-12-13 13:01:59 +01:00
Bruno Windels
cf0f75cad4 allow changing active room in grid by clicking it 2018-12-13 13:01:59 +01:00
Bruno Windels
6ec6303b97 support opening all rooms of a group in OpenRoomsStore
using new view_group_grid action
2018-12-13 13:01:59 +01:00
Bruno Windels
d7924ad1a8 less ambigious name for local dispatcher 2018-12-13 13:01:59 +01:00
Bruno Windels
f95b26179f make copy of initial state, as there can be multiple instances now 2018-12-13 13:01:59 +01:00
Bruno Windels
869c81eb90 cram OpenRoomsStore between RoomViewStore and dispatcher
the idea is that it will keep a RoomViewStore for every
room on the screen, and also keep track of which one is
the current one.

For now, it just replicates the existing functionality of
having just 1 room on the screen.

Since the RoomViewStore just has access to a local dispatcher
and not the global anymore, all dispatching of actions
needs to be moved to the OpenRoomsStore, so room alias resolving,
event forwarding, ... is moved there.
2018-12-13 12:59:18 +01:00
David Baker
d7319d7e4f
Merge pull request #2330 from matrix-org/travis/fix-pinned-rooms
Fix pinning of rooms without badges
2018-12-07 17:44:36 +00:00
Travis Ralston
216fc6412a Fix pinning of rooms without badges
Fixes https://github.com/vector-im/riot-web/issues/7723

This adds consideration for rooms that are "mentions only" (or "unread-muted" as internally referenced).
2018-12-05 13:52:27 -07:00
Travis Ralston
c46bae59b2
Merge branch 'develop' into travis/cors-on-join 2018-12-05 11:30:19 -07:00
Travis Ralston
7e817f4aa9
Add a helpful comment 2018-12-05 11:29:53 -07:00
J. Ryan Stinnett
5fc25fd6ba Only mark group as failed to load for summary
Currently, any error in the `GroupStore`s several requests can cause the whole
`GroupView` component to hide and be mark the group as failed to load.

Since it is known that group members may fail to load in some cases, let's only
show failed to load for the whole group when the summary fails.

This also strengthens the `GroupView` test by ensuring we wait for multiple
updates for checking results.

Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-12-04 18:32:16 -06:00
Travis Ralston
2b027b716f Suppress CORS errors in the 'failed to join room' dialog
This isn't pretty, but it does address https://github.com/vector-im/riot-web/issues/7526

Tested with Chrome and Firefox to ensure the message is stable enough to parse.
2018-11-27 14:23:28 -07:00
Travis Ralston
f9d5c11d8d Regenerate the room list when m.fully_read is issued
Not doing so results in the RoomListStore tracking stale data when the user reads messages on another device. The visual effect of this is rooms being incorrectly pinned in places they shouldn't be, such as the top of the list. This also fixes another visual bug where rooms don't move down once their timelines are read. This second issue is mot prominent when multiple rooms have been pinned to the top, and the middle one is read ahead of the others - it'll stick around until some other condition decides to wipe the room's cached state.

Fixes https://github.com/vector-im/riot-web/issues/7653
2018-11-04 19:47:24 -07:00
Travis Ralston
3960ae2fcd Add more commentary around how the roomCache works 2018-11-01 17:17:01 -06:00
Travis Ralston
a713cc5c52 Compare the right types of events 2018-11-01 17:07:05 -06:00
Travis Ralston
122868e32f Removing timing/performance tracking on room list store
This was used to verify the fix was actually making improvements and can be safely taken out.
2018-11-01 16:30:48 -06:00
Travis Ralston
0c7aadb92b Improve room list sort performance by caching common variables
This won't help much if the user is in a ton of highly active rooms, but for the most part this will help those in thousands of rooms, many of which are likely to be quiet. 

Fixes https://github.com/vector-im/riot-web/issues/7646
Fixes https://github.com/vector-im/riot-web/issues/7645 (due to timestamp ordering)
2018-11-01 16:28:13 -06:00
Travis Ralston
272acfa2f5 Appease the linter 2018-11-01 14:46:39 -06:00
Travis Ralston
5558b7a3b2 Avoid hitting the SettingsStore thousands of times when generating room lists
Should fix https://github.com/vector-im/riot-web/issues/7646 to some degree
2018-11-01 14:43:15 -06:00
Travis Ralston
57b99893e5
Merge pull request #1936 from turt2live/travis/pinned-room-list
Add options to pin unread/mentioned rooms to the top of the room list
2018-11-01 08:04:12 -06:00
Aaron Raimist
49ce4ef117
eslint --fix src/
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-26 22:50:38 -05:00
Travis Ralston
3d8f0adf56 Move pinned rooms check to the RoomListStore 2018-10-12 14:35:54 -06:00
Bruno Windels
2ed414494f use Room.myMembership event instead of RoomMember.membership for me
This is more reliable with LL enabled as the syncing user is
only known when it was active in the current timeline
or when the members have been loaded
2018-09-17 19:14:52 +02:00
Bruno Windels
fe734b944e remove obsolete warning as peeking will cause the membership to be null 2018-09-13 18:45:38 +02:00
Bruno Windels
9a3717a274 only dispatch an action for self-membership
as everything listens to the dispatcher, dispatching an action can be quite slow,
especially when only matched in one listener, and the rest all having to be called
to just say "no, thanks". This is especially the case for the RoomMember.membership
event being put on the dispatcher, as there can be thousands of these events
when the room members are loading.

Since the RoomMember.membership action is only used on one place,
and only for the syncing user, change it to just that and only dispatch
in that case. This saves 100-300ms when setting the OOB members in
a big room (7000k members)

Maybe later on we can back this by room.getMyMembership() and avoid the
listener even...
2018-09-07 19:53:01 +02:00
David Baker
54620591cc Don't crash if the value of a room tag is null
We were checking that the order was not null, but not the object
itself.
2018-08-23 12:05:09 +01:00
David Baker
941a3cfa53 Support M_INCOMPATIBLE_ROOM_VERSION
For https://github.com/vector-im/riot-web/issues/7164
2018-08-21 18:33:25 +01:00
David Baker
94c7ae2bf5
Merge pull request #2098 from matrix-org/dbkr/destroy_widget
Destroy non-persistent widgets when switching room
2018-08-17 09:53:41 +01:00
David Baker
e3643bd74c Lint 2018-08-17 09:42:23 +01:00
Bruno Windels
cead4096d8
Merge pull request #2118 from matrix-org/bwindels/feature_lazyloading
Lazy loading of room members
2018-08-16 18:14:55 +02:00
Bruno Windels
440ebd187d getMyMembership() doesn't take id anymore 2018-08-14 11:47:05 +02:00
David Baker
f44cc8e66e
Merge pull request #2112 from matrix-org/dbkr/recognise_server_notices_room
Recognise server notices room(s)
2018-08-07 09:52:25 +01:00
David Baker
b5ce1ac5e1 Recognise server notices room(s)
and put them in their own section at the bottom
2018-08-06 18:00:40 +01:00
David Baker
b2302af708 Update room tags behaviour to match spec more
Fix Riot's behaviour with room tags after my cleanup in
https://github.com/matrix-org/matrix-doc/pull/1457 . Although, reading
it again, it's not clear how you're supposed to tell the difference
between a reverse-dns tag name and a legacy freeform text tag
(contains a '.'?) - I've left it detecting these as freeform text
for now.
2018-08-06 16:58:54 +01:00
David Baker
7875d37c8e Destroy non-persistent widgets when switching room 2018-08-01 15:01:11 +01:00
Bruno Windels
cfd20c7e85 fix error/tests 2018-07-25 16:10:49 +02:00
Bruno Windels
d87d34030a fix dm detection and conf call code with lazy loading 2018-07-25 16:10:49 +02:00
Bruno Windels
7ea913ccec fall back to synced membership when own membership is not yet available (due to lazy loading) 2018-07-25 16:10:49 +02:00
Bruno Windels
8529bc55e3 use helper method for knowing whether a user was kicked
mainly for readability, but also to discourage grabbing into the member
because of lazy loading changes
2018-07-25 16:10:49 +02:00
Bruno Windels
de3e143a8f only lazy load the members when viewing a joined room 2018-07-25 16:10:49 +02:00
Bruno Windels
8c985bd049 ask client to lazy load room members when viewing a room 2018-07-25 16:10:49 +02:00
David Baker
cdd73e6e1f Check matrix client exists when stopping 2018-07-24 16:55:45 +01:00
David Baker
7044410a13 Move destroyPersistentWidget to store 2018-07-24 16:50:34 +01:00
David Baker
ec4c7ffb71 Make ActiveWidgetStore clear persistent widgets
ActiveWidgetStore is now reponsible for removing the current
persistent widget from the store if it's been removed from whatever
room it was in. As per comment, this leaves us with the store updating
itself in this case but in all other cases, views call setters on the
store to update its state. We should make it so the store keeps itself
up to date and views aren't responsible for keeping the store up to date.

The store now emits events so it can notify PersistentApp when it changes.

Fixes https://github.com/vector-im/riot-web/issues/7076
2018-07-24 16:21:43 +01:00
David Baker
7aab6fa6f1 Merge remote-tracking branch 'origin/develop' into dbkr/widget_echo 2018-07-18 09:35:57 +01:00
Matthew Hodgson
02c3bc9476
Merge pull request #2069 from matrix-org/t3chguy/slate_cont2
Moar Slate Fixes
2018-07-17 17:15:01 +01:00
Michael Telatynski
23b6abf8b7
no point saving history at this point, maybe future supported
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 09:27:11 +01:00
Michael Telatynski
cbe5944ff0
preserve selection and history between room changes and refreshes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 22:04:42 +01:00
David Baker
a79caed0c9 Merge remote-tracking branch 'origin/develop' into dbkr/tiny_jitsi_follows_you_between_rooms 2018-07-16 17:21:51 +01:00
David Baker
379d65bd6c
Merge pull request #2064 from matrix-org/t3chguy/slate_cont2
simplify MessageComposerStore and improve its performance
2018-07-16 17:20:48 +01:00
Michael Telatynski
2f1779751b
make the MessageComposerStore stateless for better performance
and inter-tab composition (by simplifying it. WIN-WIN)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 16:56:08 +01:00
David Baker
d16ac4d80c
Merge pull request #1890 from matrix-org/matthew/slate
Replace Draft with Slate
2018-07-16 14:16:25 +01:00
David Baker
4c6419a3c5 Merge remote-tracking branch 'origin/develop' into dbkr/widget_echo 2018-07-16 13:24:13 +01:00
David Baker
0f32c3a018 PR feedback 2018-07-16 13:18:10 +01:00
Michael Telatynski
59a14f2c0b
re-hydrate Values which have been serialized into LocalStorage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-15 20:34:27 +01:00
David Baker
e56feea9ec Put always-on-screen widgets in top left
always-on-screen widgets now appear in the top-left where the
call preview normally is if you're not in the room that they're in.

Fixes https://github.com/vector-im/riot-web/issues/7007
Based off https://github.com/matrix-org/matrix-react-sdk/pull/2053
2018-07-12 18:43:49 +01:00
David Baker
8f10ee01c6 Implement always-on-screen capability for widgets
As per https://github.com/matrix-org/matrix-doc/issues/1354

This is whitelisted to only jitsi widgets for now as per comment,
mostly because any widget that we may make always-on-screen we need
to preemptively put in a PersistedElement container, which is
unnecessary for any other widget.

Apologies that this does a bunch of refactoring which could have
been split out separately: I only discovered what needed to be
refactored in the process of doing this.

Fixes https://github.com/vector-im/riot-web/issues/6984
2018-07-11 18:07:32 +01:00
Michael Telatynski
fd4f9679df
convert md<->rt if the stored editorState was in a different state
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-11 09:43:39 +01:00
Matthew Hodgson
efdc5430d7 merge develop 2018-07-09 17:50:07 +01:00
David Baker
b6f854abe4 Simplify event name as it's the only one 2018-07-05 20:00:42 +01:00
David Baker
658ac73064 comments 2018-07-05 19:57:24 +01:00
David Baker
3f60300983 Remove redundant check 2018-07-05 19:51:12 +01:00
David Baker
8c10dc1860 Remove unhelpful commented code 2018-07-05 19:50:11 +01:00
David Baker
7e2b559ccd Make if clearer 2018-07-05 19:46:37 +01:00
David Baker
fb7ce9dd7f More doc 2018-07-05 19:40:45 +01:00
David Baker
1f2d279a0a Consistency, redundant check & doc 2018-07-05 19:38:42 +01:00
David Baker
eb552e5cef Just pass the roomId into WidgetEchoStore 2018-07-05 18:43:20 +01:00
David Baker
3199e68578 Lint 2018-07-03 11:22:19 +01:00
David Baker
8b64ddcbe8 Do some level of local echo for widgets
* Show a spinner while we wait for widgets to be deleted
 * Hide widgets while they're pending deletion
 * Don't put another jitsi widget into the room if there's already
   one pending
2018-07-03 11:16:44 +01:00
Michael Telatynski
a548c83647
when the user switches room, close room settings
this is especially annoying if they choose Leave Room
which indirectly switches room

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-26 17:07:39 +01:00
Luke Barnard
da9fe9917b Fix click on faded left/right/middle panel -> close settings
- implement generic dispatch to close user/room/group settings
 - use dispatch to allow clicks on disabled left/right/middle panel to
   close settings

A much more maintainable approach would be to use dedicate routing
instead of doing different things depending on what page of the app is
currently being viewed. At the very least we could make the concept of a
settings page generic.
2018-05-29 13:16:39 +01:00
Matthew Hodgson
9c0c806af4 correctly send pills in messages 2018-05-12 20:04:58 +01:00
Matthew Hodgson
02947063d3 Merge branch 'develop' into matthew/slate 2018-05-05 22:45:44 +01:00
Michael Telatynski
f2102e283c
Merge branches 'develop' and 't3chguy/m.relates_to' of github.com:matrix-org/matrix-react-sdk into t3chguy/m.relates_to 2018-05-02 13:08:38 +01:00
David Baker
3d478c3c3a
Merge pull request #1867 from matrix-org/luke/fix-group-request-concurrency
Prevent error responses wedging group request concurrency limit
2018-05-02 10:45:12 +01:00
Luke Barnard
2dfb3146b0 Simplify concurrent request error handling 2018-05-02 10:39:15 +01:00
Luke Barnard
71c1198d12 Rewrite limitConcurrency to fix error catching
Make sure that we only catch errors that are a result of
calling fn()
2018-05-01 18:01:25 +01:00
Luke Barnard
bd703b17e5 Update documentation for GroupStore.registerListener 2018-05-01 16:57:28 +01:00
Luke Barnard
56ec7713bb Refresh group rooms and members when selecting a tag 2018-05-01 16:54:14 +01:00
Luke Barnard
4d8394954c Only create one group store listener in RoomList
Instead of creating several and destroying the reference to the one
created before.
2018-05-01 14:24:58 +01:00
Luke Barnard
da1a5616eb Prevent error responses wedging group request concurrency limit
Fixes https://github.com/vector-im/riot-web/issues/6592
2018-05-01 14:04:13 +01:00
Luke Barnard
e3a07be127 Remove GroupStore logging 2018-05-01 13:14:01 +01:00
Luke Barnard
023daef4b7 Refactor GroupStores into one global GroupStore
Take a step closer to a flux-like architecture for group data, for
the purposes of providing features that require it.

Now the app has a single GroupStore that can be poked to fetch
updates for a particular group.
2018-05-01 11:24:17 +01:00
Matthew Hodgson
75a2be1a8d WIP (doesn't build yet) replacing draft with slate 2018-04-23 01:13:18 +01:00
Michael Telatynski
c77807bd22
Merge branches 'develop' and 't3chguy/m.relates_to' of github.com:matrix-org/matrix-react-sdk into t3chguy/m.relates_to
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

# Conflicts:
#	src/i18n/strings/en_EN.json
#	src/i18n/strings/eu.json
#	src/i18n/strings/fr.json
#	src/i18n/strings/lv.json
#	src/i18n/strings/ru.json
#	src/i18n/strings/zh_Hant.json
2018-04-12 09:48:06 +01:00
Luke Barnard
42141f7da7 Fetch group data when leaving or joining to update the view 2018-04-10 10:03:54 +01:00
Michael Telatynski
b5ed08eba2
Merge
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-03-24 17:52:49 +00:00
Luke Barnard
35cc443562 Limit group requests to 3 at once
using a FIFO queue.

This is needed in order to lower the priority of getting group
state and prioritise everything else, namely initial sync.

It should be noted that this by no means guarantees that the
first incremental sync will happen sooner; the client could
end up doing some other requests first instead.
2018-03-13 11:35:19 +00:00
Luke Barnard
faf517419f Return null instead of undefined on failure 2018-03-06 12:14:41 +00:00
Luke Barnard
0fc79a4a0d Remove delay used in testing 2018-03-06 12:13:46 +00:00
Luke Barnard
afbd563810 Potentially fix a memory leak in FlairStore
For each successful request of a group profile, we previously
emitted an `updateGroupProfile` event per caller of
`getGroupProfileCached`. This is sub-optimal because only a single
event emit is required to update the views listening.

It's possible that this was enabling some race to cause a memory
leak but this is not certain, hence the extra logging for future
debugging.
2018-03-06 11:33:56 +00:00
Luke Barnard
d5908fbc1e Fix FlairStore cache busting 2018-03-01 15:06:05 +00:00
Luke Barnard
4037a22492 Fix bug where avatar change not reflected in LLP
Fixes vector-im/riot-web#6189
2018-03-01 14:40:03 +00:00
Luke Barnard
fae7af1a62 Do proper null-checks on decypted events to fix NPEs
Previously we assumed that a decrypted event has a room_id
but this isn't necessarily true for to_device events.

It makes sense to ignore events that aren't associated with
rooms anyway given that the list we're updating only contains
rooms!
2018-02-23 15:04:04 +00:00
Luke Barnard
9e969e33b7 Reorder the RoomListStore lists on Event.decrypted 2018-02-23 10:32:33 +00:00
Luke Barnard
644ddbf9b9 Regenerate room lists on Room event
To make sure that we handle rooms that our
client has not seen previously, we regenerate
the room list when the room is stored -
which is indicated by the js-sdk by the
Room event.
2018-02-20 17:57:46 +00:00
Michael Telatynski
665ddccb0d
restrict to m.text for now
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-02-20 15:45:25 +00:00
Michael Telatynski
34b427d15e
s/quote_event/reply_to_event/
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-02-19 23:41:07 +00:00
Luke Barnard
32130fbc28 Don't regenerate RoomListStore state for notifs/scrollback/etc.
Only do so for the live timeline of rooms.
2018-02-19 09:56:03 +00:00
Luke Barnard
94a0a90457 Make RoomListStore aware of Room.timeline events
so that we can do reorderings of lists ordered by most recent event.

No optimisations here; we only update for timeline events
on live timelines that could update the "unread count".
2018-02-16 14:16:50 +00:00
Luke Barnard
c8ccbed0b1
Merge pull request #1751 from matrix-org/luke/dnd-group-view-tag-panel
Implement GroupTile avatar dragging to TagPanel
2018-02-15 11:05:28 +00:00
Luke Barnard
389d96bc46 Use optimistic removedTagsAccountData state in TagOrderStore
when receiving TagOrderActions.moveTag.pending, which now exposes
this state.
2018-02-14 16:47:29 +00:00
Luke Barnard
3020c8cd94 Fix custom tags not being ordered manually
Actually fixes vector-im/riot-web#6135 unlike #1748, which
incorrectly assumed that custom tags would be included in
listOrders.

This fix makes sure that the `default` case in the `switch`
is actually used.
2018-02-14 11:23:29 +00:00
Luke Barnard
c670b76ec8
Merge pull request #1743 from matrix-org/luke/feature-tag-panel-tile-context-menu
Add context menu to TagTile
2018-02-13 17:28:43 +00:00
Luke Barnard
a34fea8af8 Merge branch 'develop' into luke/feature-tag-panel-tile-context-menu 2018-02-13 16:51:00 +00:00
Luke Barnard
f16bc93fee If a tag is unrecognised, assume manual ordering
(as we did previously)

Fixes https://github.com/vector-im/riot-web/issues/6135
2018-02-13 16:09:17 +00:00
Luke Barnard
5af560f625 Make removedTags a Set for perf 2018-02-13 14:43:34 +00:00
Luke Barnard
322012cf88 Add comment to explain hacky optimism 2018-02-12 18:46:36 +00:00
Luke Barnard
e3f68f12c8 Add context menu to TagTile
With two options: View Community and Remove, which
removes the tag from the panel.
2018-02-12 18:01:08 +00:00
lukebarnard
9b0df19149 Make RoomListStore aware of sub list orderings
so that it can do optimistic updates of ordered lists.
2018-02-08 16:20:37 +00:00
lukebarnard
dd0e981d72 Handle indication from server that a room has no more tags 2018-02-06 12:00:23 +00:00
lukebarnard
8d0d0b43ff Handle first tag added/last tag removed
This is a special case because untagged rooms should
appear in im.vector.fake.recent and tagged rooms
should not.
2018-02-06 12:00:06 +00:00
lukebarnard
c665c1170b Regenerate room lists when we get RoomMember.membership 2018-02-05 18:27:50 +00:00
lukebarnard
9982efbd8f Regenerate room lists when we get m.direct 2018-02-05 18:06:29 +00:00
lukebarnard
330ce0f02e On failure, regenerate state from sdk
Instead of using history, which could be unpredictable
2018-02-05 17:34:05 +00:00
lukebarnard
81eca49266 Merge branch 'luke/room-list-flux' of github.com:matrix-org/matrix-react-sdk into luke/room-list-flux 2018-02-05 11:40:42 +00:00
Luke Barnard
ff8fcb3139
Merge branch 'develop' into luke/room-list-flux 2018-02-05 11:39:39 +00:00
David Baker
cfd1f28258
Merge pull request #1722 from matrix-org/luke/load-tags-after-first-sync
Use correct condition for getting account data after first sync
2018-01-30 15:21:12 +00:00
lukebarnard
40907ecf29 Use correct condition for getting account data after first sync
so that we can get tags sooner.
2018-01-26 19:39:06 +01:00
lukebarnard
4820a195ab Remove logging 2018-01-26 09:15:03 +01:00
lukebarnard
701abb6a21 Move management of room lists to RoomListStore
this is part maintenance to make RoomList clearer and part
allowing room list state to be modified via a dispatch.
2018-01-25 22:16:03 +01:00
Michael Telatynski
37dcb33b15
Reset quotingEvent on Room Change because inideal UX
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-01-22 14:45:04 +00:00
lukebarnard
5f413ddf8b Do not fetch GroupStore resources if already fetching 2018-01-17 17:01:42 +00:00
lukebarnard
3ebf278cf3 Refactor GroupStore based on existing STATE_KEY concept
by factoring out a lot of repeated code.
2018-01-17 16:59:13 +00:00
lukebarnard
2a1f8bd394 Ignore remote echos caused by this client
by sending each tag_ordering with a _storeId and ignoring accout data
that has a matching _storeId.

This will tend to become out of sync with the server over time if
requests continually fail, but subsequent successful requests will
rectify any differences.
2018-01-17 10:51:28 +00:00
lukebarnard
16c13fb079 Replace TagPanel react-dnd with react-beautiful-dnd
This new library handles the simple case of an ordered vertical
(or horizontal) list of items that can be reordered.

It provides animations, handles positioning of items mid-drag
and exposes a much simpler API to react-dnd (with a slight loss
of potential function, but we don't need this flexibility here
anyway).

Apart from this, TagOrderStore had to be changed in a highly
coupled way, but arguably for the better. Instead of being
updated incrementally every time an item is dragged over
another and having a separate "commit" action, the
asyncronous action `moveTag` is used to reposition the tag in
the list and both dispatch an optimistic update and carry out
the request as before. (The MatrixActions.accountData is still
used to indicate a successful reordering of tags).

The view is updated instantly, in an animated way, and this
is handled at the layer "above" React by the DND library.
2018-01-15 18:12:27 +00:00
Michael Telatynski
1bc9d344ae
Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/nvl/rich_quoting
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

# Conflicts:
#	src/components/views/messages/TextualBody.js
2018-01-10 11:54:58 +00:00
lukebarnard
85cdd888e8 Combine TagOrderStore and FilterStore
so that shift-click semantics can work. The store that computes the shift-click
rules has to be aware of the actual order of tags displayed, so they must be done
in the same store.
2018-01-03 11:33:59 +00:00
Luke Barnard
5abf0440c6
Merge pull request #1666 from matrix-org/luke/fix-duplicate-group-profile-requests
Dedupe requests to fetch group profile data
2018-01-02 19:02:50 +00:00
lukebarnard
479e88cff7 Log an error to get group profile data 2018-01-02 18:55:50 +00:00
lukebarnard
45e860de7a Document GroupStore.registerListener 2018-01-02 18:12:08 +00:00
lukebarnard
3947a72d1b Fix to allow subsequent group profile requests if one fails
Also, delete the groupProfilePromise immediately after setting
the group profile (the first if-statement will prevent a new
request from being started).
2018-01-02 10:42:48 +00:00
Luke Barnard
71740cc176 Merge branch 'develop' into luke/fix-room-list-group-store-leak 2017-12-15 17:36:36 +00:00
Luke Barnard
6e832c7d73 Dedupe requests to fetch group profile data 2017-12-15 16:28:50 +00:00
Luke Barnard
34e455c6fc Fix leaking of GroupStore listeners in RoomList 2017-12-15 14:12:21 +00:00
lukebarnard
e1ea8f0a78 Copy state when initialisng, reset state when logging out 2017-12-13 10:57:47 +00:00
lukebarnard
d5534a9ece Copyright 2017-12-13 10:17:38 +00:00
Luke Barnard
60d8ebb914 Refactor MatrixActions to something much easier to grok. 2017-12-12 16:05:18 +00:00
Luke Barnard
3e532e3722 Use consistent indentation and break;s in TagOrderStore switch 2017-12-12 14:10:39 +00:00
Luke Barnard
a120335130 Handle groups being joined and left 2017-12-11 18:03:19 +00:00
Luke Barnard
0b38bf5e7b Do not allow ordering until TagOrderStore has loaded 2017-12-11 17:24:33 +00:00
Luke Barnard
aa914098dc Return null if TagOrderStore is loading
The view should decide the default state.
2017-12-11 17:19:29 +00:00
Luke Barnard
991ea4ebe5 Fix a few bugs with TagOrderStore:
- Have TagOrderStore listen for MatrixSync actions so that it can initialise
   tag ordering state.
 - Expose an empty list until the client has done its first sync and has
   fetched list of joined groups
2017-12-11 17:17:05 +00:00
Michael Telatynski
0f85391587
Implement Rich Quoting/Replies
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-12-10 12:50:41 +00:00
Luke Barnard
72550961e5 Move 'commit_tags' to action creator 2017-12-08 10:52:20 +00:00
Luke Barnard
12515441cd Handle accountData events from TagOrderStore
This introduces a generic way to register certain events emitted by
the js-sdk as those that should be propagated through as dispatched
actions.

This allows the store to treat the js-sdk as the "Server" in the
Flux data flow model. It also allows for stores to not be aware
specifically of the matrix client if they are only reading from it.
2017-12-08 10:05:18 +00:00
Luke Barnard
ee6df105fe Introduce action creators
These can be used to dispatch actions immediately, or after some asynchronous
work has been done. Also, create GroupActions.fetchJoinedGroups as an example.

The concept of async action creators can be used in the following cases:
 - stores or views that do async work, dispatching based on the results
 - actions that have complicated payloads, would make more sense as functions
   with documentation that dispatch created actions.
2017-12-07 14:17:32 +00:00
Luke Barnard
8f88995b3d Add analytics to TagOrderStore 2017-12-06 14:22:11 +00:00
Luke Barnard
4af7def20e Use AccountData im.vector.web.tag_ordering
Also, make defaults sensible
2017-12-06 14:13:08 +00:00
Luke Barnard
82a95f0793 Simplify order_tag in TagOrderStore
such that:
 - it takes a targetTag to be replaced instead the previous tag to insert after
 - it optionally displaces the targetTag before or after the inserted tag
2017-12-06 11:22:06 +00:00
Luke Barnard
8178496457 Implement Store for ordering tags in the tag panel 2017-12-05 14:45:44 +00:00
Luke Barnard
3bcb3195c4 Implement shift-click and ctrl-click semantics for TP 2017-11-30 14:48:54 +00:00
Luke Barnard
45bcb6f2ed Implement TagPanel (or LeftLeftPanel) for group filtering
This allows for filtering of the RoomList by group. When a group is selected, the room list will show:
 - Rooms in the group
 - Direct messages with members in the group

A button at the bottom of the TagPanel allows for creating new groups, which will appear in the panel following creation.
2017-11-29 16:53:43 +00:00
Luke Barnard
7ec4010881 Make GroupStore use MatrixClientPeg
To avoid weirdness with using a cached matrix client
2017-11-28 11:54:05 +00:00
lukebarnard
2913d396ef Remove redundant super class EventEmitter for FlairStore
, which seemingly is not being used.
2017-11-20 11:34:20 +00:00
Richard van der Hoff
c48994e981 Flairstore: Fix broken reference 2017-11-17 13:56:56 +00:00
Luke Barnard
31be27515c Modify the group room visibility API to reflect the js-sdk changes
See https://github.com/matrix-org/matrix-js-sdk/pull/569
2017-11-09 16:28:21 +00:00
Luke Barnard
65cea53f3d
Merge pull request #1592 from matrix-org/luke/groups-fix-accept-invite-refresh-members
Fetch group members after accepting an invite
2017-11-08 13:35:53 +00:00
Luke Barnard
3e3ebd6358 Fetch group members after accepting an invite 2017-11-08 11:52:52 +00:00
Luke Barnard
1c5e7f3048 Fix FlairStore getPublicisedGroupsCached to give the correct, existing promise 2017-11-08 11:31:04 +00:00
Luke Barnard
edc744067f Add checkbox to GroupAddressPicker for determining visibility of group rooms 2017-11-07 18:51:41 +00:00
Luke Barnard
febeb0429e Throw an error when trying to create a group store with falsey groupId 2017-11-06 10:18:10 +00:00
Luke Barnard
da23afdec2 Better comment on FlairStore _usersInFlight 2017-11-03 18:48:15 +00:00
Luke Barnard
4d8f18742b Check against non-existant promise to resolve a user's groups 2017-11-03 18:43:43 +00:00
Luke Barnard
d64fc4c842 Fix Flair not appearing due to missing this._usersInFlight 2017-11-03 18:19:10 +00:00
David Baker
8800081cb9
Merge pull request #1567 from matrix-org/luke/fix-flair-store
Fix multiple requests for publicised groups of given user
2017-11-02 16:09:07 +00:00
Luke Barnard
21e09840dc Fix multiple requests for publicised groups of given user
Previously, a single user could end up in multiple batches, which would have been fine if the logic didn't assume otherwise. If a request took longer than 200ms, multiple batches would occur with intersecting sets of users, deleting promises that were then assumed to exist.

The logic now takes all "in flight" users to also not be "pending". Pending now means that the user will be processed in the next batch. "In flight" means the user is part of an ongoing batch.
2017-11-02 15:59:26 +00:00
Luke Barnard
bf77b51b5e Merge branch 'develop' into luke/groups-room-publicity 2017-11-02 13:39:33 +00:00
Luke Barnard
790db94fd7 Add toggle to alter the visibility of a room-group association 2017-11-02 13:31:11 +00:00
Matthew Hodgson
7d7cd30e46 turn NPE on flair resolution errors into a logged error 2017-11-01 22:10:03 +00:00
Luke Barnard
16dca08b77 Use constants instead of string literals 2017-10-31 16:13:13 +00:00
Luke Barnard
775468e71a Display whether the group summary/room list is loading
This uses a `ready` flag assigned to each fetching API used by the GroupServer. I've avoided making this generic for now for want of not doing so early.
2017-10-31 11:42:09 +00:00
Luke Barnard
175fadbb57 Add unregiseterListener to GroupStore 2017-10-27 15:08:38 +01:00
Luke Barnard
5d0aa8d7f7 Handle 403 when inspecting invited users as non-member 2017-10-27 11:38:10 +01:00
Luke Barnard
e094c32c62 Simplify GroupStore listener registration 2017-10-27 11:38:10 +01:00
Luke Barnard
7b666af24c When dispatching view_[my_]group[s], reset RoomViewStore
so that RoomTiles are not highlighted when the user is looking at MyGroups or GroupView
2017-10-24 16:32:52 +01:00
Luke Barnard
3ae31dd426 Make GroupStoreCache global for cross-package access 2017-10-24 10:39:47 +01:00
Luke Barnard
b9dc5cb5ed Merge branch 'develop' into luke/groups-update-on-invite 2017-10-23 16:05:52 +01:00
Luke Barnard
0799e5cde4 Refresh group member lists after inviting users 2017-10-23 16:04:26 +01:00
Luke Barnard
0ff5b9c6a7 Invalidate the user's public groups cache when changing group publicity
This will make the changes to their Flair "live", but only from the user's own perspective.
2017-10-23 15:28:38 +01:00
Luke Barnard
b0f8619754 Improve MyGroups UI
as per design layed out by @tur2live!
2017-10-19 17:24:45 +01:00
Luke Barnard
25d14af616 Export a global.singletonFlairStore to allow cross-project singleton 2017-10-19 12:00:03 +01:00
Luke Barnard
71443e9b94 Remove logs comments 2017-10-19 10:34:24 +01:00
Luke Barnard
5f3c06b38a Factor out Flair cache into FlairStore
This will make invalidating the userGroups cache for the user architecturally more sound (the plan is to have GroupStore hit FlairStore as opposed to Flair itself in order to invalidate the cache).
2017-10-19 10:28:59 +01:00
Luke Barnard
0415869b8c Add useful functions to GroupView to inspect user flags 2017-10-17 16:08:19 +01:00
Luke Barnard
917957c1dc Modify the group store to include group rooms
and modify components to use this new part of the store such that feedback can be given
when adding or removing a room from the room list.
2017-10-05 14:30:04 +01:00
Luke Barnard
cbb36b163b Typo 2017-10-04 18:05:40 +01:00
Luke Barnard
c1318e9102 Only maintain one GroupStore in the GroupStoreCache
So that the group store data is up-to-date and to prevent group stores hanging around in memory
2017-10-04 17:51:38 +01:00
Luke Barnard
b16eb1713e Typo 2017-10-04 17:01:44 +01:00
Luke Barnard
4017fa7f1d Factor-out GroupStore and create GroupStoreCache
In order to provide feedback when adding a room to a group, the group summarry store needs to be extended to store the list of rooms in a group. This commit is the first step required.

The next step is to get the GroupRoomList listening to updates from GroupStore and expose the list of rooms from GroupStore.

(We're running out of words to describe the hierachy of things that store things)
2017-10-04 16:56:35 +01:00
David Baker
8ec1c3ecf4 lint 2017-09-26 14:58:49 +01:00
David Baker
8d0983ab02 Fix group membership publicity
* Read the new flag in the summary API (the one we were reading
   was actually whether the group server listed you as a member to
   non-members).
 * Remove call to now-dead _loadGroupFromServer andf use the store
   instead
2017-09-26 14:46:57 +01:00
Luke Barnard
b8dca58f4f Pass matrixClient as an argument to GSS constructor 2017-09-25 10:02:13 +01:00