* 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
* tokens.ts: improve documentation
Improve variable naming and documentation on the methods in `tokens.ts`.
* rename restoreFromLocalStorage
Since the session data isn't actually stored in localstorage, this feels like a
misleading name.
* Lifecycle: bail out if picklekey is missing
Currently, if we have an accesstoken which is encrypted with a picklekey, but
the picklekey has gone missing, we carry on with no access token at all. This
is sure to blow up in some way or other later on, but in a rather cryptic way.
Instead, let's bail out early.
(This will produce a "can't restore session" error, but we normally see one of
those anyway because we can't initialise the crypto store.)
* 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
* 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
* 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
* 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>
* Clean up editor drafts for unknown rooms and add tests.
* lint
* Call cleanUpDraftsIfRequired when we know a live update has completed.
* Fix test for new call site of draft cleaning
* fix test
* Change icon for general/account tab
...and add support for compound design token icons to TabbedView,
changing all the other icons over while we're at it.
* Update snapshots
* Fix responsive mode
* Missed one
* truthy-check the whole block
* Use asset imports
* Update snapshots
* Add missing types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Eagerly add `children` to props in prep for React 18
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid assuming that setState immediately sets `this.state` values
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing context declaration
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix UserFriendlyError types to work with React 18
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract useIsVideoRoom hook
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move useWidgets hook to WidgetUtils
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract Extensions into their own right panel tab
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused components & classes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Warn users on unsupported browsers before they lack features
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update Learn more link
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update toast styles to match Figma
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove test code
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add sign out button to settings profile section
And move the logic for displaying the dialog out of the user menu
to somewhere it can be re-used.
Also close any open dialog on logout, because otherwise, well... you
can guess.
* Missing import
* Update screenshot
* This button doesn't need to be an anchor
* Use Flex component
* Use new force-close function
* More tests
* Add reusable empty state for the right panel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update Thread Panel to match latest Figma
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use --cpd-space var
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add reusable empty state for the right panel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update base card styling to match Compound
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>
* Create new method for header button behaviour
With the introduction of tabs, the behaviour of the header buttons is
changed as follows:
- Close any right panel if open
- Open the correct right panel if no panel was open before
The old method (and behaviour) is retained as showOrHidePhase.
* Implement tabs in the right panel
There are three tabs: Info, People and Threads
* Remove unwanted code from RoomSummaryCard
- Remove the menu item for opening the memberlist since that is now
taken of by the tabs.
- Remove the close button
* Remove code for focusing close button from tac item
See https://github.com/matrix-org/matrix-react-sdk/pull/12410
There's no longer a close button to focus so we instead focus the thread
tab. This is done in RightPaneltabs.tsx so we just need to remove this
code.
* Introduce a room info icon to the header
This was previously present in the legacy room header but not in the new
header.
* BaseCard changes
- Adds id, ariaLabelledBy and role props to implement tab accessibility.
- Adds hideHeaderButtons prop to hide header buttons (think back and
close buttons).
- Change confusing header rendering code:
header is not rendered ONLY when no header is passed AND
hideHeaderButtons is true.
* Refactor repeated code into function
Created a new function createSpaceScopeHeader which returns the
component if the room is a space room. Previously this code was
duplicated in every component that uses SpaceScopeHeader component.
* Pass BaseCard attributes and use helper function
Actually using the code from the last two commits
* Add, update and remove tests/screenshots/snapshots
* Fix distance between search bar and tabs
* Update compound
* Update screenshots/snapshots
* Extract SearchInfo interface and SearchScope enum
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix in-progress and update behaviour of RoomSearchView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove search button from legacy header
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move search from aux panel to room summary card
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Wire up Cmd/Ctrl F for moved search field
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use cpd space tokens
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale props
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix ctrl/cmd f search shortcut
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert the back button for now
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Cancel search on escape
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix missing X
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract SearchScope and SearchInfo into Searching
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to icon button for cancel search
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* yarn.lock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* lint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update locators
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
* Discard changes to package.json
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Handle narrow viewports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix closing all modals
We used `Modal.closeCurrentModal()` in a bunch of places, in all cases
(as far as I can see: it wasn't commented) we meant to close all open
modals. This swaps that function for one that closes all open modals.
Also types the close reason which claimed to be something in a comment,
of course, was wrong because a load of places passed their own random
string which was never used.
* Force close modals
* Try with minimal changes
* Already had a method for this
* Add test
* More tests
* Unused importsd
* Clear autocomplete input on selection accept
Fixes https://github.com/element-hq/element-web/issues/27194
* Playwright: use rust crypto for the bot user (#12708)
... because legacy crypto is legacy
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Extract SearchScope and SearchInfo into Searching
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Comments
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix widgets not being cleaned up correctly.
Widgets could persist forever because they were still sticky when we end the messaging.
Ending the messaging emits an event to which we connect ui changes that move the widget out of the screen. It does not end up in a pip view however.
So we need to make sure the widget is not persistend anymore when we call `stopMessagingByUid` so that any dom changes that remove the AppTile happen when the widget is not persistend anymore and let it destroy.
This PR also makes the role for `MatrixRTCSessionManager` more strict. We do ONLY use it in `Call.ts` and `CallStore` so that we dont end up in reaces where we updated the ui based on the session manager but not in sync with the call and callstore changes.
Rename activeCalls to connectedCalls. Active call can also be understood as a call where there are active participants but the user itself is not connected. Especially with the `hasActiveCallSession` field of the useRoomCall hook which is tracking active (not necassarly connected sessions)
* rest of the renaming
* fix test to adapt to reduced session manager event usage.
* Show tooltips on narrow tabbed views
* Also only show on left-side tabs
* Unused import
* Comments
* Add test
* More test
* Assert tooltip appears in playwright test
* persist previously-reported event IDs as a bloom filter
* Pin to older `@types/seedrandom`
... to work around https://github.com/Callidon/bloom-filters/issues/72
* Inline `DecryptionFailureTracker.addDecryptionFailure`
* Remove redundant TRACK_INTERVAL
There really doesn't seem to be much point to this batching up of decryption
failure reports. We still call the analytics callback the same number of times.
* Rename `trackedEvents` to `reportedEvents`
* Fix incorrect documentation on `visibleEvents`
This *does* overlap with `failures`.
* Combine `addFailure` and `reportFailure`
* Calculate client properties before starting reporting
* Clear localstorage after each test
... otherwise they interfere
* Remove redundant comment
* Ensure that reports are cleared on a logout/login cycle
* make private const private and const
---------
Co-authored-by: Richard van der Hoff <richard@matrix.org>
* Inline `DecryptionFailureTracker.addDecryptionFailure`
* Remove redundant TRACK_INTERVAL
There really doesn't seem to be much point to this batching up of decryption
failure reports. We still call the analytics callback the same number of times.
* Rename `trackedEvents` to `reportedEvents`
* Fix incorrect documentation on `visibleEvents`
This *does* overlap with `failures`.
* Combine `addFailure` and `reportFailure`
* Calculate client properties before starting reporting