* Convert tabbedview to functional component
The 'Tab' is still a class, so now it's a functional component that
has a supporting class, which is maybe a bit... jarring, but I think
is actually perfectly logical.
* put comment back
* Fix bad tab ID behaviour
* Make TabbedView a controlled component
This does mean the logic of keeping what tab is active is now in each
container component, but for a functional component, this is a single
line. It makes TabbedView simpler and the container components always
know exactly what tab is being displayed rather than having to effectively
keep the state separately themselves if they wanted it.
Based on https://github.com/matrix-org/matrix-react-sdk/pull/12478
* Move the active tab in user settings to the dialog title
Separated by a colon, as per the new design.
* Update snapshots
* Update a playwright test
* Fix more tests / snapshots
* Attempt to test all the cases of titleForTabID
* More tests
* Take the TAC out of labs!
Requires https://github.com/matrix-org/matrix-react-sdk/pull/12438
and ideally https://github.com/matrix-org/matrix-react-sdk/pull/12418
* i18n
* Add test method
That's needed now we we don't include threads in the notif count in the tests
* One less labs setting
* Update snapshot
* Disable release announcement
* Unused import
* Fix some screenshots
* Fix all the unread test cases now room unreads don't include threads
* Fix more tests
* Even more test fixes
* Still more test fixes
* Oh goodness, it's more test fixes
* Fix selectors now there are 2 buttons called Threads
* Disable some tests that aren't passing
for reasons that don't appear releated to any of the TAC work, as
per the comment.
* Remove debugging
* Oops, removed too much
* rehydrate/dehydrate device if configured in well-known
* add handling for dehydrated devices
* some fixes
* schedule dehydration
* improve display of own dehydrated device
* created dehydrated device when creating or resetting SSSS
* some UI tweaks
* reorder strings
* lint
* remove statement for testing
* add playwright test
* lint and fix broken test
* update to new dehydration API
* some fixes from review
* try to fix test error
* remove unneeded debug line
* apply changes from review
* add Jest tests
* fix typo
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* don't need Object.assign
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Mark all threads as read button
* Wrap in TooltipProvider and update snapshots
* Remove TooltipProvider wrapper: just add it to the test
* Add some more tests
* Add test for no-room-context handler because sonarcloud
* Add playwright test
* Make assertNoTacIndicator wait
* Use dedicated useMatrixClientContext function
Co-authored-by: Florian Duros <florianduros@element.io>
* Use dedicated useRoomContext function
Co-authored-by: Florian Duros <florianduros@element.io>
* Compound spacing variables
Co-authored-by: Florian Duros <florianduros@element.io>
* Compound spacing variables
Co-authored-by: Florian Duros <florianduros@element.io>
* Imports
* Use createTestClient()
* Add function to utils
* Use mkRoom
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* use unencrypted calls in unencrypted rooms (make external call links compatible with unencrypted embedded calls)
Signed-off-by: Timo K <toger5@hotmail.de>
* use same logic in Call.ts
Signed-off-by: Timo K <toger5@hotmail.de>
* fix tests
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* add video room meta space button
Signed-off-by: Timo K <toger5@hotmail.de>
* Add videoRoomsSpace to meta space configuration
Signed-off-by: Timo K <toger5@hotmail.de>
* temp
Signed-off-by: Timo K <toger5@hotmail.de>
* dont show ppl section in video room space
Signed-off-by: Timo K <toger5@hotmail.de>
* add i18n strings
Signed-off-by: Timo K <toger5@hotmail.de>
* revert waitForIframe=false (this is part of another PR)
Signed-off-by: Timo K <toger5@hotmail.de>
* fix missing mock room method
Signed-off-by: Timo K <toger5@hotmail.de>
* test snapshot: add video room meta space
Signed-off-by: Timo K <toger5@hotmail.de>
* rename Conferences -> Conference
Signed-off-by: Timo K <toger5@hotmail.de>
* space panel snap test
Signed-off-by: Timo K <toger5@hotmail.de>
* update snapshot
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test
Signed-off-by: Timo K <toger5@hotmail.de>
* add video room space tests
Signed-off-by: Timo K <toger5@hotmail.de>
* better logic
Signed-off-by: Timo K <toger5@hotmail.de>
* Add Video MetaSpace Test
Signed-off-by: Timo K <toger5@hotmail.de>
* make room join rule update reactive for the video room meta space
Signed-off-by: Timo K <toger5@hotmail.de>
* temp
Signed-off-by: Timo K <toger5@hotmail.de>
* fix description for meta space video room settings
Signed-off-by: Timo K <toger5@hotmail.de>
* tests
Signed-off-by: Timo K <toger5@hotmail.de>
* update snapshot
Signed-off-by: Timo K <toger5@hotmail.de>
* review
Signed-off-by: Timo K <toger5@hotmail.de>
* i18n
Signed-off-by: Timo K <toger5@hotmail.de>
* fix tests
Signed-off-by: Timo K <toger5@hotmail.de>
* put video meta space behind "feature_video_rooms" labs flag
Signed-off-by: Timo K <toger5@hotmail.de>
* review
Signed-off-by: Timo K <toger5@hotmail.de>
* update space store on RoomCreate state event
Signed-off-by: Timo K <toger5@hotmail.de>
* test for updating video room space on room type update
Signed-off-by: Timo K <toger5@hotmail.de>
* remove comment
Signed-off-by: Timo K <toger5@hotmail.de>
* also make knock join rule rooms part of the conference section
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Use test helpers from js-sdk for encrypted events
Rather than gut-wrenching into the matrix-js-sdk, let's use the newly-exported
test helpers to generate encrypted events.
* Fix up
* show loading spinner also if waitForIframeLoad = false
Configure EC so it waits for the content loaded action
!WARNING This breaks compatibility with the full mesh branch.
I would like to discuss here if/when we can do that.
Signed-off-by: Timo K <toger5@hotmail.de>
* stop show loading screen on widget ready (instead of preparing)
Signed-off-by: Timo K <toger5@hotmail.de>
* wait until widget loading is over before comparing screenshots
Signed-off-by: Timo K <toger5@hotmail.de>
* fix waitForIFrame=true widgets
Signed-off-by: Timo K <toger5@hotmail.de>
* test
Signed-off-by: Timo K <toger5@hotmail.de>
* always start with loading true. + cleanup
Signed-off-by: Timo K <toger5@hotmail.de>
* simplify loading
Signed-off-by: Timo K <toger5@hotmail.de>
* update snapshots (start not in loading state for waitForIframe = true widgets)
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Add A-Element-R labels to rageshakes if rust
* fix import
* Add tests for rageshake collect
* add ts-ignore in test
* refactor rageshake to match sonar Cognitive Complexity
* Ensure backup settings in playwright
* Fix verification by pass causing backup reset
* fix force backup setup by default
* fix test
* clarify when we need to bootstrap
* jslint
* post merge fix
* post rebase missing files
* fix bad merge
* update test
* Fix import
* test user forgot passkey
* better usage of locator
* fix snapshot
* remove getDialogByTitle
* Update src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* unneeded permission
* code review
* cleaning
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Rewrite doesRoomOrThreadHaveUnreadMessages to use the receipt rewrite from js-sdk
* Remove unit tests that rely on receipt timestamps
Previously, if we found a receipt for an unknown event, we would use the
receipt timestamp and declare all events before that time to be read.
Now, we ignore such "dangling" receipts until we find the event they
refer to.
This new behaviour is more correct, but does lead to more messages being
considered unread.
This commit deletes tests that checked for the old behaviour.
* Check for a missing thread in determineUnreadState
* Fix incorrect way to find room timeline
* More realistic test setup to support new receipt code
* Update snapshot to expect a room to be unread when there are no receipts
* Formatting fixes
* Update snapshot to show menu and notif button
* Disable some flaky tests
* Disable some flaky tests
* Fix test to make a threaded receipt for an event that is actually in the thread
---------
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* initial
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanup1
Signed-off-by: Timo K <toger5@hotmail.de>
* bring back call timer
Signed-off-by: Timo K <toger5@hotmail.de>
* more cleanup and test removals
Signed-off-by: Timo K <toger5@hotmail.de>
* remove event
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanups and minor fixes
Signed-off-by: Timo K <toger5@hotmail.de>
* add matrixRTC to stubClient
Signed-off-by: Timo K <toger5@hotmail.de>
* update tests (some got removed)
The removal is a consequence of EW now doing less call logic.
More logic is done by the js sdk (MatrixRTCSession)
And therefore in EC itself.
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanups
Signed-off-by: Timo K <toger5@hotmail.de>
* mock the session
Signed-off-by: Timo K <toger5@hotmail.de>
* lint
Signed-off-by: Timo K <toger5@hotmail.de>
* remove GroupCallDuration
Signed-off-by: Timo K <toger5@hotmail.de>
* review and fixing tests
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Use `MatrixClient.CryptoApi.getUserVerificationStatus` instead of `MatrixClient.checkUserTrust` in `MemberTile.tsx`
* Add tests to `MemberTile.tsx`
* Use `mocked` instead of `spyOn`
* SecureBackupPanel: stop calling `checkKeyBackup`
`checkKeyBackup` will start key backups if they aren't already running. In my
not-so-humble opinion, the mere act of opening a settings panel shouldn't change anything.
* fix SecurityUserSettingsTab test
* Use Intl to generate better internationalised date formats
* Get `Yesterday` and `Today` from Intl also
* Correct capitalisation blunder
* Fix formatTime include weekday
* Iterate
* Fix tests
* use jest setSystemTime
* Discard changes to cypress/e2e/settings/general-user-settings-tab.spec.ts
* Discard changes to res/css/_components.pcss
* Discard changes to res/css/views/elements/_LanguageDropdown.pcss
* Discard changes to src/components/views/elements/LanguageDropdown.tsx
* Add docs & tests for getDaysArray & getMonthsArray
* Discard changes to test/components/structures/__snapshots__/MatrixChat-test.tsx.snap
* Consolidate consts
* Improve testing & documentation
* Update snapshot
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Iterate
* Clarify comments
* Update src/DateUtils.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Specify hourCycle
* Discard changes to test/components/views/settings/devices/DeviceDetails-test.tsx
* Update comments
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Move `mediaDevices` mock out of `setupManualMocks`
This doesn't work well in test suites with multiple tests, because the
`mockReturnValue` is reset for subsequent tests.
In any case, having it mocked out automagically is *magical*. Let's make it
opt-in.
* clarify ts-ignore
* Switch to importing TypedEventEmitter from main js-sdk export
* Switch to importing js-sdk/matrix in cypress
* Remove duplicated imports
* Fix lint:js-fix to run prettier last otherwise ESLint --fix may cause a mess
* Add lint rule
* Switch to importing models/Room from main js-sdk export
* Switch to importing models/room-state & models/room-member from main js-sdk export
* Fix cypress-axe import
* Fix more imports
* Fix cypress-axe import
* Fix bad merge
* Switch to importing TypedEventEmitter from main js-sdk export
* Switch to importing js-sdk/matrix in cypress
* Remove duplicated imports
* Fix lint:js-fix to run prettier last otherwise ESLint --fix may cause a mess
* Add lint rule
* Switch to importing models/Room from main js-sdk export
* Fix cypress-axe import
* Fix more imports
* Fix cypress-axe import
* Fix duplicated lint rule
`MatrixClient.crypto` is going away, so let's switch over to `getCrypto()`.
There doesn't seem to be anything else relying on the `crypto` stub in
`mockClientMethodsCrypto()`, so let's get rid of that.
Events which are still in the process of being sent should *not* be included
in the `EventTimeline`. Doing so means that we will attempt to render them
twice, which makes react explode.
Fixes https://github.com/vector-im/element-web/issues/25770
* enable feature_intentional_mentions with v1.7
* org.matrix.msc3952.mentions -> m.mentions
* update push rules test util
* only support stable version 1.7
* use stable values for msc3952 push rules
* use stable intentional mentions rule sin test models
* unstable feature in settings controller
* test util for oidcclientconfigs
* rename type and lint
* correct oidc test util
* store issuer and clientId pre auth navigation
* update for js-sdk userstate, tidy
* Use new `CryptoEvent.VerificationRequestReceived` event
https://github.com/matrix-org/matrix-js-sdk/pull/3514 deprecates
`CryptoEvent.VerificationRequest` in favour of
`CryptoEvent.VerificationRequestReceived`. Use the new event.
* Factor out `getDeviceCryptoInfo` function
I seem to be writing this logic several times, so let's factor it out.
* Factor out `getUserDeviceIds` function
Another utility function
* VerificationRequestToast: `getStoredDevice` -> `getDeviceCryptoInfo`
* SlashCommands: `getStoredDevice` -> `getDeviceCryptoInfo`
* MemberTile: `getStoredDevicesForUser` -> `getUserDeviceIds`
* Remove redundant mock of `getStoredDevicesForUser`
* util functions to get static client id
* check static client ids in login flow
* remove dead code
* add trailing slash
* comment error enum
* spacing
* PR tidying
* more comments
* add ValidatedDelegatedAuthConfig type
* Update src/Login.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update src/Login.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update src/utils/ValidatedServerConfig.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* rename oidc_static_clients to oidc_static_client_ids
* comment
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Move Room context threadId our of RoomView state
* Allow maintaining a different right panel width for thread panels
* Fix types
* Fix types
* Add tests
* Increase coverage
* Increase coverage
* Add comments
* Update src/components/structures/MainSplit.tsx
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* When joining room in sub-space join the parents too
* Fix joined state not updating on sync
* Add membership check
* Update tests
* Improve coverage
* Make TS happier
* Make TS happier
* Settings panels: avoid exceptions with rust crypto
If we are using rust crypto, `client.crypto` is undefined. We'll need to fix
these up better in future, but for now, just return early.
* Update tests
* Send correct receipts when viewing a room
* Fix strict type issues
* Handle promises
* Handle more primises
* Add generic array type
* Replace existende check with type predicate
* Fix wrong variable check
* Improve comment about initial read marker
* Use read_markers API for fully read receipts
* Log public receipt fallback
* Rename variables in new code to be aligned to the spec
* Add end-2-end test for read markers and receipts
* Update @types/jest to 29.2.6
This adds the correct types for the contexts field on mock objects, which I'll need shortly
* Enable pagination for overlay timelines
* Use `getUserDeviceInfo` instead of `downloadKeys` and `getStoredDevicesForUser`
* Use new `getUserDeviceInfo` api in `UserInfo.tsx` and `UserInfo-test.tsx`
* Fix missing fields
* Use `getUserDeviceInfo` instead of `downloadKeys`
* Move `ManualDeviceKeyVerificationDialog.tsx` from class to functional component and add tests
* Fix strict errors
* Update snapshot
* Add snapshot test to `UserInfo-test.tsx`
* Add test for <BasicUserInfo />
* Remove useless TODO comment
* Add test for ambiguous device
* Rework `<BasicUserInfo />` test
* Use `cli.getUserDeviceInfo` instead of `cli.downloadKeys` to create a room
* Use `client.getCrypto().getUserDeviceInfo` instead of `client.getUserDeviceInfo`
* Update `createRoom-test.ts` to use `getUserDeviceInfo`
* Remove duplicate field
* Simplify `isDeviceVerified` definitions
Currently, we have two similar but different definitions of `isDeviceVerified`,
and they both do a lot of wrangling that relies on js-sdk internals. We can
simplify it a lot by just calling `MatrixClientPeg.checkDeviceTrust`.
* fix tests
* more test fixes
* Apply `strictNullChecks` to `src/utils/exportUtils`
* strict fix
* fix strictNullChecks issues in some utils
* fix error message
* test coverage
* lint
* more strictNullChecks
* small optimisation for getUniqueRoomsWithIndividuals
* tidy
* test coverage
Add a method to the fake MatrixClient used in tests for compatibility with
changes in matrix-org/matrix-js-sdk#3092. This stops the downstream tests
from failing on that PR.
* Add an action to search for users in the user directory according to MSC3973
Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
* Fix linter errors
Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
* Update the matrix-widget-api package to version 1.3.0
Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
* Improve the test
Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
---------
Signed-off-by: Dominik Henneke <dominik.henneke@nordeck.net>
* basic navigation to focused poll
* add tooltip
* drill permalinkCreator down to poll history
* render poll tile and link to timeline
* tidy and lint
* unit test poll detail
* add view poll link to ended pollliste item
* strict fix
* pr improvements
* pass room as prop
* permalinkcreator ts assertion
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* render a poll body that errors for poll end events
* add fetching logic to pollend tile
* extract poll testing utilities
* test mpollend
* strict fix
* more strict fix
* strict fix for forwardref
* add filter component
* update poll test utils
* add unstyled filter tab group
* filtertabgroup snapshot
* lint
* update test util setupRoomWithPollEvents to allow testing multiple polls in one room
* style filter tabs
* test error message for past polls
* sort polls list by latest
* extract poll option display components from pollbody
* add ended poll list item component
* use named export for polllistitem
* test POllListItemEnded
* comments
* strict fixes
* extract poll option display components
* strict fixes
* strict