Commit graph

180 commits

Author SHA1 Message Date
kegsay
a215027c6b
Implement MSC3575: Sliding Sync (#8328)
* Add labs flag for sliding sync; add sliding_sync_proxy_url to config.json

* Disable the labs toggle if sliding_sync_proxy_url is not set

* Do validation checks on the sliding sync proxy URL before enabling it in Labs

* Enable sliding sync and add SlidingSyncManager

* Get room subscriptions working

* Hijack renderSublists in sliding sync mode

* Add support for sorting alphabetically/recency and room name filters

* Filter out tombstoned rooms; start adding show more logic

list ranges update but the UI doesn't

* update the UI when the list is updated

* bugfix: make sure the list sorts numerically

* Get invites transitioning correctly

* Force enable sliding sync and labs for now

* Linting

* Disable spotlight search

* Initial cypress plugins for Sliding Sync Proxy

* Use --rm when running Synapse in Docker for Cypress tests

* Update src/MatrixClientPeg.ts

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Update src/components/views/rooms/RoomSublist.tsx

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Update src/settings/controllers/SlidingSyncController.ts

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Update src/components/views/rooms/RoomSublist.tsx

Co-authored-by: Travis Ralston <travisr@matrix.org>

* WIP add room searching to spotlight search

* Only read sliding sync results when there is a result, else use the local cache

* Use feature_sliding_sync not slidingSync

* Some review comments

* More review comments

* Use RoomViewStore to set room subscriptions

* Comment why any

* Update src/components/views/rooms/RoomSublist.tsx

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Fix cypress docker abstraction

* Iterate sliding sync proxy support

* Stash mostly functional test

* Update sliding sync proxy image

* i18n

* Add support for spaces; use list ID -> index mappings

- Mappings are more reusable and easier to understand than
  racing for index positions.
- Register for all spaces immediately on startup.

* When the active space is updated, update the list registration

* Set spaces filter in the correct place

* Skeleton placeholder whilst loading the space

* Filter out spaces from the room list

* Use the new txn_id promises

* Ensure we actually resolve list registrations

* Fix matrix-org/sliding-sync#30: don't show tombstoned search results

* Remove unused imports

* Add SYNCV3_SECRET to proxy to ensure it starts up; correct aliases for SS test

* Add another basic sliding sync e2e test

* Unbreak netlify

* Add more logging for debugging duplicate rooms

* If sliding sync is enabled, always use the rooms result even if it's empty

* Drop-in copy of RoomListStore for sliding sync

* Remove conditionals from RoomListStore - we have SlidingRoomListStore now

* WIP SlidingRoomListStore

* Add most sliding sync logic to SlidingRoomListStore

Still lots of logic in RoomSublist. Broken things:
 - Join count is wrong completely.
 - No skeleton placeholder when switching spaces.

* Migrate joined count to SS RLS

* Reinstate the skeleton UI when the list is loading

* linting

* Add support for sticky rooms based on the currently active room

* Add a bunch of passing SS E2E tests; some WIP

* Unbreak build from git merge

* Suppress unread indicators in sliding sync mode

* Add regression test for https://github.com/matrix-org/sliding-sync/issues/28

* Add invite test flows; show the invite list

The refactor to SS RLS removed the invite list entirely.

* Remove show more click as it wasn't the bug

* Linting and i18n

* only enable SS by default on netlify

* Jest fixes; merge conflict fixes; remove debug logging; use right sort enum values

* Actually fix jest tests

* Add support for favourites and low priority

* Bump sliding sync version

* Update sliding sync labs to be user configurable

* delint

* To disable SS or change proxy URL the user has to log out

* Review comments

* Linting

* Apply suggestions from code review

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Update src/stores/room-list/SlidingRoomListStore.ts

Co-authored-by: Travis Ralston <travisr@matrix.org>

* Review comments

* Add issue link for TODO markers

* Linting

* Apply suggestions from code review

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* More review comments

* More review comments

* stricter types

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-09-07 15:42:39 +00:00
Robin
0d6a550c33
Prepare for Element Call integration (#9224)
* Improve accessibility and testability of Tooltip

Adding a role to Tooltip was motivated by React Testing Library's
reliance on accessibility-related attributes to locate elements.

* Make the ReadyWatchingStore constructor safer

The ReadyWatchingStore constructor previously had a chance to
immediately call onReady, which was dangerous because it was potentially
calling the derived class's onReady at a point when the derived class
hadn't even finished construction yet. In normal usage, I guess this
never was a problem, but it was causing some of the tests I was writing
to crash. This is solved by separating out the onReady call into a start
method.

* Rename 1:1 call components to 'LegacyCall'

to reflect the fact that they're slated for removal, and to not clash
with the new Call code.

* Refactor VideoChannelStore into Call and CallStore

Call is an abstract class that currently only has a Jitsi
implementation, but this will make it easy to later add an Element Call
implementation.

* Remove WidgetReady, ClientReady, and ForceHangupCall hacks

These are no longer used by the new Jitsi call implementation, and can
be removed.

* yarn i18n

* Delete call map entries instead of inserting nulls

* Allow multiple active calls and consolidate call listeners

* Fix a race condition when creating a video room

* Un-hardcode the media device fallback labels

* Apply misc code review fixes

* yarn i18n

* Disconnect from calls more politely on logout

* Fix some strict mode errors

* Fix another updateRoom race condition
2022-08-30 15:13:39 -04:00
Michael Telatynski
9b99c967f4
Fix progress bar regression throughout the app (#9219)
* Fix useSmoothAnimation enablement not working properly by getting rid of it

Passing duration=0 is more logical and less superfluous

* Refactor UploadBar to handle state more correctly

* Change ProgressBar to new useSmoothAnimation signature and default animated to true for consistency

* Add type guard

* Make types stricter

* Write tests for the ProgressBar component

* Make the new test conform to tsc --strict

* Update UploadBar.tsx

* Update UploadBar.tsx

* Update UploadBar.tsx
2022-08-25 16:39:00 +01:00
Janne Mareike Koschinski
94d292a6ec
Reduce amount of requests done by the onboarding task list (#9194)
* Significantly reduce work of useUserOnboardingContext
* Wrap UserOnboardingButton to avoid unnecessary work when it's not shown
* Remove progress from user onboarding button
2022-08-22 13:48:54 +02:00
Janne Mareike Koschinski
e8eefeb937
Avoid hardcoding branding in user onboarding (#9206)
* Avoid hardcoding branding in user onboarding
* Make spotlight test more reliable
2022-08-22 12:11:24 +02:00
Janne Mareike Koschinski
9eaf48b176
The Welcome Home Screen: Return Button (#9089)
* Implement button to return to user onboarding screen
* Add analytics events
* Increase stability of lazy loading test
2022-08-12 12:55:31 +02:00
Šimon Brandner
a866005bea
Add GHA for Dead Code Analysis (#9052) 2022-08-04 08:00:49 +00:00
Janne Mareike Koschinski
b62413d725
The Welcome Home Screen: Dedicated Download Apps Dialog (#9120)
* Implement new download apps dialog
* Added screenshot test for app download dialog
2022-08-02 16:08:02 +02:00
Janne Mareike Koschinski
1e4c336fed
New User Onboarding Task List (#9083)
* Improve type of AccessibleButton to accurately represent available props
* Update analytics events
2022-07-29 11:43:29 +00:00
Šimon Brandner
6a8dd23d29
Add support for EventTarget to useEventEmitter() (#9060) 2022-07-29 11:32:03 +02:00
Šimon Brandner
8379f5624e
Use stable prefixes MSC3827 (#9092) 2022-07-27 18:10:37 +00:00
yaya-usman
017f489be6 nits fixes 2022-07-15 22:55:11 +03:00
Janne Mareike Koschinski
780a903e2f
Improve spotlight accessibility by adding context menus (#8907)
* Extract room general context menu from roomtile
* Create hook to access and change a room’s notification state
* Extract room notification context menu from roomtile
* Add room context menus to rooms in spotlight
* Make arrow movement apply to the whole dialog, not just the input box
2022-07-12 15:03:08 +02:00
Travis Ralston
924865b315
Add safety around missing topics and space settings (#8957) 2022-06-30 19:34:24 +00:00
Šimon Brandner
68c94c6400
Update MSC3827 implementation to not change the default behaviour (#8936) 2022-06-29 16:37:23 +00:00
Šimon Brandner
663bca559f
Implement MSC3827: Filtering of /publicRooms by room type (#8866) 2022-06-24 15:08:00 +00:00
Janne Mareike Koschinski
5096e7b992
Integrate searching public rooms and people into the new search experience (#8707)
* Implement searching for public rooms and users in new search experience
* Implement loading indicator for spotlight results
* Moved spotlight dialog into own subfolder
* Extract search result avatar into separate component
* Build generic new dropdown menu component
* Build new network menu based on new network dropdown component
* Switch roomdirectory to use new network dropdown
* Replace old networkdropdown with new networkdropdown
* Added component for public room result details
* Extract hooks and subcomponents from SpotlightDialog
* Create new hook to get profile info based for an mxid
* Add hook to automatically re-request search results
* Add hook to prevent out-of-order search results
* Extract member sort algorithm from InviteDialog
* Keep sorting for non-room results stable
* Sort people suggestions using sort algorithm from InviteDialog
* Add copy/copied tooltip for invite link option in spotlight
* Clamp length of topic for public room results
* Add unit test for useDebouncedSearch
* Add unit test for useProfileInfo
* Create cypress test cases for spotlight dialog
* Add test for useLatestResult to prevent out-of-order results
2022-06-15 16:14:05 +02:00
Johannes Marbach
abd39c61b1
Add support for MD / HTML in room topics (#8215)
* Add support for MD / HTML in room topics

Setting MD / HTML supported:
- /topic command
- Room settings overlay
- Space settings overlay

Display of MD / HTML supported:
- /topic command
- Room header
- Space home

Based on extensible events as defined in [MSC1767]

Fixes: vector-im/element-web#5180
Signed-off-by: Johannes Marbach <johannesm@element.io>

[MSC1767]: matrix-org/matrix-spec-proposals#1767

* Fix build error

* Add comment to explain origin of styles

Co-authored-by: Travis Ralston <travpc@gmail.com>

* Empty commit to retrigger build

* Fix import grouping

* Fix useTopic test

* Add tests for HtmlUtils

* Add slash command test

* Add further serialize test

* Fix ternary formatting

Co-authored-by: Travis Ralston <travpc@gmail.com>

* Add blank line

Co-authored-by: Travis Ralston <travpc@gmail.com>

* Properly mock SettingsStore access

* Remove trailing space

* Assert on HTML content and add test for plain text in HTML parameter

* Appease the linter

* Fix JSDoc comment

* Fix toEqual call formatting

* Repurpose test for literal HTML case

* Empty commit to fix CI

Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-06-07 14:20:32 -06:00
Germain
408f4dfe09
Add public room directory hook (#8626) 2022-05-19 09:03:29 +01:00
Šimon Brandner
fb30b67b14
Fix issues with the new topic dialog (#8608) 2022-05-16 14:10:00 +02:00
Germain
fdd5494402
Add dialog to navigate long room topics (#8517) 2022-05-13 08:55:10 +01:00
Robin
97c99c6aae
Only jump to date after pressing the 'go' button (#8548) 2022-05-10 12:49:05 -04:00
Travis Ralston
aa664b88a4 Remove feature_custom_status
Rationale: It's legacy and wrong in so many ways.
2022-05-06 12:39:03 -06:00
Robin
658ff4dfe6
Iterate video room designs in labs (#8499)
* Remove blank header from video room view frame

* Add video room option to space context menu

* Remove duplicate tooltips from face piles

* Factor RoomInfoLine out of SpaceRoomView

* Factor RoomPreviewCard out of SpaceRoomView

* Adapt RoomPreviewCard for video rooms

* "New video room" → "Video room"

* Add comment about unused cases in RoomPreviewCard

* Make widgets in video rooms mutable again to de-risk future upgrades

* Ensure that the video channel exists when mounting VideoRoomView
2022-05-04 17:02:06 -04:00
Michael Telatynski
c257bc3f7a
Prefer RoomStateEvent.Update where possible as it fires far less (#7878) 2022-02-24 14:39:25 +00:00
Eric Eastwood
7fa27f5834
Add jump to date functionality to date headers in timeline v2 (#7339)
Fix https://github.com/vector-im/element-web/issues/7677

Utilizes MSC3030: https://github.com/matrix-org/matrix-doc/pull/3030

https://user-images.githubusercontent.com/558581/150060664-79627573-f4fd-497c-b726-dc3485854bd0.png
2022-01-27 16:32:12 -06:00
Michael Telatynski
38634f86d1
Space panel should watch spaces for space name changes (#7432) 2021-12-21 15:35:54 +00:00
Michael Telatynski
c1315bfa6c
Fix useUserStatusMessage exploding on unknown user (#7365) 2021-12-14 16:07:34 +00:00
Michael Telatynski
132e19beb7
Update typescript-eslint plugin & parser (#7351) 2021-12-13 23:39:45 +00:00
Šimon Brandner
43499b9244
Update status message in the member list and user info panel when it is changed (#7338)
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2021-12-13 12:44:03 +00:00
Aaron Raimist
bdc56be863
Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-10-22 17:23:37 -05:00
Michael Telatynski
f59baf1efb Tidy some types 2021-09-14 14:41:55 +01:00
Michael Telatynski
979bc71609 Deduplicate join rule management between rooms and spaces 2021-09-01 15:52:56 +01:00
Michael Telatynski
b3a28bde89 Factor out useEventEmitterState hook 2021-07-28 17:39:56 +01:00
J. Ryan Stinnett
ae0a8b8da4 Auto-fix lint errors 2021-06-29 13:11:58 +01:00
Michael Telatynski
83296b7440 Fix typing 2021-06-22 22:19:01 +01:00
Michael Telatynski
1286be1ffb Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/fix/17244
 Conflicts:
	src/components/views/room_settings/AliasSettings.tsx
2021-06-22 22:02:09 +01:00
Michael Telatynski
3e38d92fa4 Fix up some more type defs 2021-06-17 14:49:27 +01:00
Michael Telatynski
83c30b2280 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/fix/17244
 Conflicts:
	src/components/views/spaces/SpaceCreateMenu.tsx
2021-06-15 12:24:26 +01:00
Michael Telatynski
13a2f779b9 improve defaults for useRoomState and useStateToggle hooks 2021-06-08 16:29:06 +01:00
Michael Telatynski
4725a9e8fa Extract useRoomState hook into hooks directory 2021-06-07 16:42:59 +01:00
Robin Townsend
a06306d560 Merge branch 'develop' into improved-forwarding-ui 2021-06-05 11:04:17 -04:00
Michael Telatynski
83d223475b delint imports 2021-06-03 08:41:22 +01:00
Robin Townsend
59660df0cb Use a QueryMatcher for forward dialog filtering
This also allows us to filter by room aliases.

Signed-off-by: Robin Townsend <robin@robin.town>
2021-06-01 20:17:20 -04:00
Michael Telatynski
a6ca8f797d Fix useAsyncMemo out-of-order resolutions 2021-05-25 15:34:44 +01:00
Michael Telatynski
c10512fd56 Initial SpaceRoomView work 2021-03-01 18:53:11 +00:00
Travis Ralston
6227d3c183 Appease the linters 2021-01-18 20:53:15 -07:00
Travis Ralston
0d29d15a46 Support room-defined height as well
Much like widget widths, it is acceptable for us to forget what everyone's height was previously at.
2021-01-18 19:27:11 -07:00
Michael Telatynski
412d84ccb2 improve comments 2020-12-09 11:09:18 +00:00
Michael Telatynski
ecb0b0113f Also use getJoinedMemberCount as its capable of using the room summary member count instead
Leave the useRoomMembers hook for future use as it is very useful.
2020-12-09 11:07:40 +00:00