* Force verification even for refreshed cients
Set a flag on login to remember that the device needs to be verified
so that we don't forget if the user refreshes the page, but still allow
user with an existing unverified session to stay logged in.
* Hopefully make matrixchat tests pass?
Much, much tweaking to make the matrixchat tests pass again. Should
hopefully make them a bit more solid in general with judicious use of
waitFor rather than flushPromises(). Also lots of fun to stop the state
bleeding between tests.
* Manual yarn.lock manipulation
to hopefully resolve infinite package sadness
* Make final test pass(?)
Mock out the createClient method to return the same client, because
we've mocked the peg to always return that client, so if we let the
code make another one having still overridden the peg, everything becomes
cursed.
Also mock out the autodiscovery stuff rather than relying on fetch-mock.
* another waitFor
* death to flushPromises
* Put the logged in dispatch back
Actually it breaks all sorts of other things too, having fixed all the
MatrixChat tests (although this is useful anyway).
* Try displaying the screen in onClientStarted instead
* Put post login screen back in logged in
but move ready transition to avoid flash of main UI
* Rejig more in the hope it does the right thing
* Make hook work before push rules are fetched
* Add test for unskippable verification
* Add test for use case selection
* Fix test
* Add playwright test for unskippable verification
* Remove console log
* Add log message to log line
* Add tsdoc
* Use useTypedEventEmitter
* Remove commented code
* Use catch instead of empty then on unawaited promises
or in one case just await it because the caller was async anyway
* Add new mock
* Use Compound close icon in favour of mishmash of x/close icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale CSS
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove right panel toggling behaviour on room header buttons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Since Element Call has now reached production on Element X, Element Web needs to be able to at least participate in group calls. Starting a group call or creating a video room will still require the labs flags, for now.
Note that Jitsi-based video rooms are also affected by this change. This is not because we intend to delabs them (rather, we intend to get rid of them in favor of Element Call video rooms), but because it's easiest to handle both video room variants consistently.
* Add labs option to exclude unverified devices
Add a labs option which will, when set, switch into the "invisible crypto"
mode of refusing to send keys to, or decrypt messages from, devices that have
not been signed by their owner.
* DecryptionFailureBody: better error messages
Improve the error messages shown for messages from insecure devices.
* playwright: factor out `createSecondBotDevice` utility
* Playwright test for messages from insecure devices
* fixup! DecryptionFailureBody: better error messages
Use compound colour tokens, and add a background colour.
* fixup! DecryptionFailureBody: better error messages
Use compound spacing tokens
Add a labs option which will, when set, switch into the "invisible crypto"
mode of refusing to send keys to, or decrypt messages from, devices that have
not been signed by their owner.
* Open room settings on room header avatar click
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix nested interactive elements aria fail
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update things for a11y and update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* CryptographyPanel: fix display of device key
* CryptographPanel: Fix HTML nesting
you're not supposed to put <tr> directly inside <table>; doing so causes
warnings.
* Update tests
I have no idea why this is flaking. There are warnings about
things not being wrapped in act() which may be relevant... this makes
the warnings happy, although apparently should not be necessary.
https://github.com/testing-library/user-event/discussions/906 and
https://github.com/testing-library/user-event/issues/497 are
depressing reading (making the versions the same didn't help). I think
my conclusion might be to do this until we're able to upgrade to the
latest testing-library, then re-evaluate.
It still may or may not fix the flake.
* Mobile registration optimizations
- don't autocaptialize or autocorrect on username field
- show each password field in their own row
- improve position of tooltip on mobile so that it's visible
* Use optional prop rather than default prop.
* Redirect to welcome screen if mobile_registration is requested but not enabled in the config.
* autocorrect value should be "off"
* Add unit tests for mobile registration
* Fix test typo
* Fix typo
* Replace `MatrixClient.keyBackupKeyFromRecoveryKey` by `decodeRecoveryKey`
* Replace `MatrixClient.isValidRecoveryKey` by local check with `decodeRecoveryKey`
* Replace old `decodeRecoveryKey` import
* Remove `matrix-js-sdk/src/crypto/recoverykey` import of eslint exception
* Add tests for `RestoreKeyBackupDialog`
* Soften UIA fallback postMessage check to work cross-origin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Do the same for the SSO UIA flow
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add support for `org.matrix.cross_signing_reset` UIA stage flow
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Check against MessageEvent::source instead
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove protected method
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* [create-pull-request] automated change (#12966)
Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com>
* Add timezone to right panel profile.
* Add setting to publish timezone
* Add string for timezone publish
* Automatically update timezone when setting changes.
* Refactor to using a hook
And automatically refresh the timezone every minute.
* Check for feature support for extended profiles.
* lint
* Add timezone
* Remove unintentional changes
* Use browser default timezone.
* lint
* tweaks
* Set timezone publish at the device level to prevent all devices writing to the timezone field.
* Update hook to use external client.
* Add test for user timezone.
* Update snapshot for preferences tab.
* Hide timezone info if not provided.
* Stablize test
* Fix date test types.
* prettier
* Add timezone tests
* Add test for invalid timezone.
* Update screenshot
* Remove check for profile.
---------
Co-authored-by: ElementRobot <releases@riot.im>
Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com>
* Add config option to force verification
If this is set, users will not have the option to skip verification
on login (they will still be able to reload and continue unverified,
currently). Default off.
* Test for complete security dialog
* I hadn't set up prettier
* Move event preview to its own component
* Remove unused parameter
* Add prefix to file, audio, video and image in the pinned message banner
* Add prefix to poll in the pinned message banner
* Add tests
* Fix read receipt animation
The way it was done involved remembering dom nodes and then getting
their position later when animating the receipt to its next position,
but I'm not sure how this worked since the DOM node may not neccessarily
be in the DOM anymore. Instead, just remember the bounding box coordinates.
At worst it might go weird if the window is resized but seems fine in
practice. Also, keeping references to dom nodes feels like a fast road
to memory leaks.
Fixes https://github.com/element-hq/element-web/issues/27916
* Attempt to write a test for read receipts
and fix naming
* Another test
also change a condition to make it testable
* Fix when an event is pinned and the banner displays the correct event.
Fix when an event is pinned and the banner displays the good event.
* Update e2e tests
* Move pinned message hooks to a dedicated file
* Add a banner at the top of a room to display the pinned messages
* Put the pinning banner behind labs pinning labs flag
* Add redacted event support
* Handle UTD in pinning message banner
* Add tests for redaction
* Make all the banner clickable
* Add tests for PinnedMessageBanner.tsx
* Add e2e tests for the pinned message banner
* Review changes
* Improve PinningUtils.ts doc and use common methods to check pin or unpin.
Removed unused methods.
* Send room account data and state event in parallel
* Rerender MessageActionBar.tsx if there is a room pinned event
* Update pinning util tests
* Add test for room pinned events in MessageActionBar-test.tsx
* Add drafts to the RTE and tests
* test drafts in threads
* lint
* Add unit test.
* Fix test failure
* Remove unused import
* Clean up wysiwyg drafts and add test.
* Fix typo
* Add timeout to allow for wasm loading.
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Add Pin/Unpin action in quick access of the message action bar
* Add tests for `MessageActionBar`
* Add tests for `PinningUtils`
* Fix `MessageContextMenu-test`
* Add e2e test to pin/unpin from message action bar
* Fix pinning event loading after restart
* Update deps
* Replace pinned event list
* Add a dialog to confirm to unpin all messages
* Use `EmptyState` when there is no pinned messages
* Rework `PinnedEventTile` tests
* Add comments and refactor `PinnedMessageCard`
* Rework `PinnedMessageCard` tests
* Add tests for `UnpinAllDialog`
* Add e2e tests for pinned messages
* Replace 3px custom gap by 4px gap
* Use string interpolation for `Pin` action.
* Update playright sceenshot for empty state
* Refactor the various email/phone management UI into a single component
These were basically the same component copied & pasted 3 times and
tweaked to match the behaviour of each case. This de-dupes them into
one component.
This all could really benefit from playwright tests, but would require
setting up a dummy ID server in the playwright tests. This is all legacy
pre-MAS stuff so its questionable whether its worth the effort.
* Basic test, remove old tests
* Use different text to confirm remove & put headers back
although the two texts are both 'Remove' in practice
* Remove string
This was never triggered anyway with sydent & synapse because they
don't seem to agree on what error to return. In any case, I think it
makes more sense for it to be consistent with the email path, ie. using
a dialog.
* Avoid nested forms
* Snapshots
* More snapshots
* Test the hs side
* Snapshots
* Test IS bind/revoke
* Test remove can be cancelled
* Test unvalidated cases & fix phone error
* Reset state between tests
* Import useState directly
* One more direct React import
* Add chat button to new room header for video room & maximised widgets
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update `@vector-im/compound-design-tokens`
* Update jest snapshots
* Update playwright snapshots
* Use `--cpd-font-body-lg-semibold` for toast
* Use `--cpd-font-body-lg-semibold` for other elements
* Remaining heading fix
* Detect autoReplaceEmoji setting
* Add plain text emoticon to emoji replacement for plain and rich text modes of the RTE.
* Use latest wysiwyg
* lint
* fix existing jest tests and docs
* Add unit tests
* Update wysiwyg to fix flakes.
* fix wording of tests and comments
* use useSettingValue