Commit graph

69 commits

Author SHA1 Message Date
Michael Telatynski
ad8d27d2b2
Fix some features not being configurable via features (#10276) 2023-03-03 13:31:51 +00:00
Michael Telatynski
76b82b4b2b
Make more code conform to strict null checks (#10219
* Make more code conform to strict null checks

* Fix types

* Fix tests

* Fix remaining test assertions

* Iterate PR
2023-02-24 15:28:40 +00:00
Germain
8c22584f64
Remove threads labs flag and the ability to disable threads (#9878) 2023-02-20 14:46:07 +00:00
Germain
3e2bf5640e
Update to supportsThreads (#9907) 2023-01-30 12:20:11 +00:00
Germain
7ca1b385d9 Force enable threads labs flag 2023-01-09 12:38:19 +00:00
Richard van der Hoff
6ec6d44c96
Add a config flag to enable the rust crypto-sdk (#9759)
This PR adds an option to `config.json` which will make the js-sdk use the rust crypto sdk, instead of the libolm implementation.

To use it, you need to add something like this to `config.json`:

```
    "features": {
        "feature_rust_crypto": true
    },
```

We don't (yet) have any way to migrate a device between implementations, so the setting that was in use when you log in is persisted to the device; it is *visible* via the labs section but cannot currently be changed.

This is part of https://github.com/vector-im/element-web/issues/21972, and enables the functionality added to the js-sdk in https://github.com/matrix-org/matrix-js-sdk/pull/2969.
2022-12-16 17:10:26 +00:00
Germain
2d2755d145
🧵 Enable threads by default (#9736)
* Delabs threads

* remove threads reload when labs is toggled

* Fix ts strict

* fix rebase mistake

* remove .only

* fix pr comments

* re-introduce backwards compat

* Fix export test

* Fix SearchREsultTile test

* strict ts
2022-12-13 15:09:15 +00:00
Michael Weimann
526645c791
Apply prettier formatting 2022-12-12 12:24:14 +01:00
kegsay
dcf497d013
sliding-sync: spider all rooms on the user's account for search (#9514)
* sliding-sync: spider all rooms on the user's account for search

On startup, slowly accumulate room metadata for all rooms on the
user's account. This is so we can populate the local search cache
with enough data for it to function, obviating the need to have
separate code paths for sliding sync searches.

This will allow spotlight search to work with slow/no network
connectivity, though clicking on the room will still require a
round trip.

This is an explicit request from @ara4n to improve the snapiness
of room searches, despite the unbounded bandwidth costs requesting
all N rooms on the user's account.

* Comments and tweak defaults

* Review comments; remove SS search code

* bugfix: use setListRanges once the list has been set up

If we don't, then we send needless extra data and can cause
bugs because setList will wipe the index->room_id map, which
trips up SlidingRoomListStore.
2022-11-01 10:27:03 +00:00
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
Michael Telatynski
5aae974e93
Make use of js-sdk roomNameGenerator to handle i18n for generated room names (#9209)
* Make use of js-sdk roomNameGenerator to handle i18n for generated room names

* DRY

* Make tsc happier

* Update MatrixClientPeg.ts
2022-08-26 11:23:56 +01: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
Michael Telatynski
3c5c2bef6d
Remove Piwik support (#8835)
* Remove all mentions of Piwik

* Kill off all consumer of the old Piwik Analytics module

* Simplify ModalManager interface

* i18n

* Attempt to fix old e2e tests

* Remove unused component

* Iterate PR
2022-06-14 17:51:51 +01:00
Michael Telatynski
21d0aaf524
Use updates stable relations from js-sdk (#8715)
* Use updates stable relations from js-sdk

* Relations is now accessible on the Room instead

* Reuse more existing code and ditch confusing `isThreadRelation`

* Fix last usage of removed `isThreadRelation`

* Update tests to match removal of isThreadRelation

* Tweak method naming to closer match spec

* Fix missing method name change
2022-06-07 11:16:54 +01:00
Eric Eastwood
8add540f27
Document what all of our "Pegs" are (just singletons) (#8510)
As discussed at https://matrix.to/#/!fLeHeojWgBGJlLNdLC:matrix.org/$DHCPeZQ1aty_1l_nNHo_5F8Uwb3t29N1zuabWa5qLzM?via=matrix.org&via=element.io&via=vector.modular.im

Peg is used in the literal sense:

> a short pin or bolt, typically tapered at one end, that is used for securing something in place, hanging things on, or marking a position.

Looking for an `MatrixClient`? Just look for the `MatrixClientPeg` on the peg board. So you'll find a `MatrixClient` hanging on the `MatrixClientPeg`.

Maybe you're more familiar with these alternative names like `MatrixClientSingleton` but that's a bit long and Java-y or `MatrixClientHandle` in the win32 world.
2022-05-09 21:34:27 -05:00
Michael Telatynski
964c60d086
Apply corrections identified by SonarQube (#8457) 2022-05-03 22:04:37 +01:00
Germain
1ed68a718f
Add new user signup event tracking in PostHog (#8412) 2022-04-28 11:46:02 +01:00
Hugh Nimmo-Smith
26b771bbf9
Don't show the prompt to enable desktop notifications immediately after registration (#8274)
* Fix MatrixClientPeg.userRegisteredWithinLastHours so that it works

* Try fixing end-to-end test + add case for New search beta

* Remove end-to-end test case for Search beta toast as it only shows up after 5 minutes

* Revert to localStorage based solution + non-inverted logic + test including time advancement
2022-04-13 19:05:08 +01:00
Travis Ralston
b667ef9f18 Step 3.2: Stop using getComponent in code 2022-03-28 14:02:31 -06:00
Travis Ralston
bd1568f4e4 Un-break crypto for soft logout 2022-02-16 12:33:33 -07:00
Travis Ralston
aba61fa390 Revert "Support refresh tokens (#7802)"
This reverts commit 839593412c.
2022-02-16 12:32:38 -07:00
J. Ryan Stinnett
0dc1355441
Fix right panel data flow (#7811) 2022-02-16 11:19:28 +00:00
Travis Ralston
839593412c
Support refresh tokens (#7802)
MSC: https://github.com/matrix-org/matrix-doc/pull/2918
Fixes https://github.com/vector-im/element-web/issues/18698
Fixes https://github.com/vector-im/element-web/issues/20648
**Requires https://github.com/matrix-org/matrix-js-sdk/pull/2178**

**Note**: There's a lot of logging in this PR. That is intentional to ensure that if/when something goes wrong we can chase the exact code path. It does not log any tokens - just where the code is going. Overall, it should be fairly low volume spam (and can be relaxed at a later date).

----

This approach uses indexeddb (through a mutex library) to manage which tab actually triggers the refresh, preventing issues where multiple tabs try to update the token. If multiple tabs update the token then the server might consider the account hacked and hard logout all the tokens.

If for some reason the timer code gets it wrong, or the user has been offline for too long and the token can't be refreshed, they should be sent to a soft logout screen by the server. This will retain the user's encryption state - they simply need to reauthenticate to get an active access token again.

This additionally contains a change to fix soft logout not working, per the issue links above.

Of interest may be the IPC approach which was ultimately declined in favour of this change instead: https://github.com/matrix-org/matrix-react-sdk/pull/7803
2022-02-15 20:16:49 +00:00
Aaron Raimist
7b94e13a84 Merge branch 'develop' into sort-imports
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-12-09 08:34:20 +00:00
Michael Telatynski
aa7cae08aa
Add utility method mxLoginWithAccessToken to login with existing access token (#7261) 2021-12-02 13:46:44 +00:00
Aaron Raimist
bdc56be863
Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-10-22 17:23:37 -05:00
Germain
e20ac7bf1e
Implement deep-linking for threads (matrix.to) (#7003) 2021-10-22 09:30:36 +01:00
Dariusz Niemczyk
5290afcc4c Replace console.warn with logger.warn
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
5e73a212f4 Replace console.error with logger.error
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
2d1d42b90e
Globally replace all console.logs via codemod (#6827)
This commit replaces all the `console.log` to `logger.log` via an automated script.
Related: vector-im/element-web#18425
2021-09-21 09:48:09 -06:00
Germain Souquet
54a0a869bf PR feedback 2021-08-24 09:09:28 +01:00
Germain Souquet
ac0412d238 rename feature flag for Threads 2021-08-19 12:25:29 +01:00
Michael Telatynski
ce78cdf4ad Conform to new react and typescript eslint rules 2021-07-19 22:43:11 +01:00
Michael Telatynski
d737b4e6ab Use webpack worker-loader to load the IndexedDB worker instead of homegrown hack 2021-07-12 18:43:20 +01:00
Michael Telatynski
bd175c6f40 Improve and consolidate typing 2021-07-10 15:43:46 +01:00
Šimon Brandner
dcb5557848
Revert some changes due to failing tests
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-07-02 18:00:07 +02:00
Šimon Brandner
426c79f47d
Delint
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-07-02 17:25:30 +02:00
Šimon Brandner
a4fe2f143f
First batch of burning
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-07-02 12:12:41 +02:00
J. Ryan Stinnett
ae0a8b8da4 Auto-fix lint errors 2021-06-29 13:11:58 +01:00
Hubert Chathi
d5b115dd08 don't overwrite callback with undefined if no customization provided 2021-03-22 19:52:09 -04:00
Timo Kösters
f575625c7a
fix: make room directory correct when using a homeserver with explicit port
Server names are allowed to contain ':' to specify a port, see https://matrix.org/docs/spec/appendices#server-name
User ids on the other hand are not allowed to contain ':', even
historical user ids, see https://matrix.org/docs/spec/appendices#historical-user-ids

Therefore we can use change the regex to make sure the localpart is not
allowed to contain ':'.
2021-03-15 23:13:16 +01:00
David Baker
bb6659f983 Set ICE candidate pool size option
So we can start candidate gathering in advance
2021-02-16 15:48:58 +00:00
Bruno Windels
067b4ca93e
Merge pull request #5397 from matrix-org/bwindels/customise-dehydration-key
Add customisation point for dehydration key
2020-11-04 17:25:52 +00:00
Bruno Windels
f3743f3ca1 fix spelling 2020-11-04 16:53:58 +01:00
Bruno Windels
625e03cde3 allow customising the source of dehydration key 2020-11-04 16:51:45 +01:00
Michael Telatynski
0c14de3017 defer some toasts 2020-11-02 17:25:48 +00:00
J. Ryan Stinnett
2698a12a6f Convert src/SecurityManager.js to TypeScript
This includes a few small API tweaks as well, only in cases where TS revealed we
were doing something confusing or wrong.

Part of https://github.com/vector-im/element-web/issues/15350
2020-10-09 17:27:03 +01:00
J. Ryan Stinnett
1b255e42c3 Convert src/Lifecycle.ts to TypeScript 2020-10-07 12:53:59 +01:00
J. Ryan Stinnett
11eb9b59e6 Convert src/Login.js to TypeScript 2020-10-07 11:47:27 +01:00
Hubert Chathi
503f32948c try to unlock secret storage with dehydration key 2020-10-01 21:40:49 -04:00