* Create m.room calls in video rooms, and m.prompt calls otherwise
* Terminate a call when the last person leaves
* Hook up the room header button to a unified CallView component
* Write more tests
* Make useEventEmitterState more efficient
By not invoking the initializing function on every render
* Make useWidgets more efficient
By not calling WidgetStore on every render
* Add new group call experience Labs flag
* Add viewingCall field to RoomViewStore state
Currently has no effect, but in the future this will signal to RoomView to show the call or call lobby.
* Add element_call.use_exclusively config flag
As documented in element-web, this will tell the app to use Element Call exclusively for calls, disabling Jitsi and legacy 1:1 calls.
* Make placeCall return a promise
So that the UI can know when placeCall completes
* Update start call buttons to new group call designs
Since RoomView doesn't do anything with viewingCall yet, these buttons won't have any effect when starting native group calls, but the logic is at least all there and ready to be hooked up.
* Allow calls to be detected if the new group call experience is enabled
* Test the RoomHeader changes
* Iterate code
* Add an element_call_url config option
* Add a labs flag for Element Call video rooms
* Add Element Call as another video rooms backend
* Consolidate event power level defaults
* Remember to clean up participantsExpirationTimer
* Fix a code smell
* Test the clean method
* Fix some strict mode errors
* Test that clean still works when there are no state events
* Test auto-approval of Element Call widget capabilities
* Deduplicate some code to placate SonarCloud
* Fix more strict mode errors
* Test that calls disconnect when leaving the room
* Test the get methods of JitsiCall and ElementCall more
* Test Call.ts even more
* Test creation of Element video rooms
* Test that createRoom works for non-video-rooms
* Test Call's get method rather than the methods of derived classes
* Ensure that the clean method is able to preserve devices
* Remove duplicate clean method
* Fix lints
* Fix some strict mode errors in RoomPreviewCard
* Test RoomPreviewCard changes
* Quick and dirty hotfix for the community testing session
* Revert "Quick and dirty hotfix for the community testing session"
This reverts commit 37056514fbc040aaf1bff2539da770a1c8ba72a2.
* Fix the event schema for org.matrix.msc3401.call.member devices
* Remove org.matrix.call_duplicate_session from Element Call capabilities
It's no longer used by Element Call when running as a widget.
* Replace element_call_url with a map
* Make PiPs work for virtual widgets
* Auto-approve room timeline capability
Because Element Call uses this now
* Create a reusable isVideoRoom util
* Add Voice Broadcast labs setting and composer button
* Implement strict typing
* Extend MessageComposer-test
* Extend tests
* Revert some strict type fixex
* Convert FEATURES to enum; change case
* Use fake timers in MessageComposer-test
* trigger verification of other devices
* add sign out of current device section in device details
* fix classname
* lint
* strict type fix
* fix test
* improve mocked VerifReq
* 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
* Fixmatrix-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>
* 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
* add expandable device details to session list
* test device expansion in filtered list
* test expanded device id management from sessionmanager tab
* i18n
* update snapshot
* update snapshots
* use css instead of br
* add device filtering
* improve dropdown styling
* test device filtering
* update type imports
* fix types
* security card margin
* more specific type for onFilterOptionChange
* split current device section into component
* add dropdown button for currentsession device details
* test currentdevicesection
* remove unnecc beforeEach
* update type imports
* i18n and lint
* add security card and style
* deprecate warning and verified svgs that use hard coded color
* style icons, test
* i18n
* stylelint
* redo lost lint fixes
* fix svg ref
* actually fix svg
* fix stupid copy pasting
* use rgba for e2e light variations
* add security card and style
* deprecate warning and verified svgs that use hard coded color
* style icons, test
* i18n
* stylelint
* fix svg ref
* actually fix svg
* fix stupid copy pasting
* use rgba for e2e light variations
* use device security card in current session section
* lint
* update snapshot test after dev merge
* add session manager tab to user settings
* fussy import ordering
* i18n
* basic sorted list outline
* rename to filtered device list
* exclude current device session from other sessions list
* test other sessions section
* extract deletedevices logic into util fn
* unit test deleteDevices
* test devicespanel device deletion
* remove debug logs
* i18n
* assert more on deleteMultipleDevices calls
* add session manager tab to user settings
* fussy import ordering
* i18n
* extract device fetching logic into hook
* use new extended device type in device tile, add verified metadata
* add current session section, test
* tidy
* update types for DeviceWithVerification
* Move pin drop out of labs (PSG-664)
Signed-off-by: Johannes Marbach <johannesm@element.io>
* Regenerate strings
Signed-off-by: Johannes Marbach <johannesm@element.io>
* redesign device tile info
* test DeviceTile except for broken date mocking
* mock dates the nice way, test lastactivity in device tile
* tweak spacing style
* update comment style in rethemendex
* i18n
* Spike AXE A11Y testing in Cypress
* Fix NewRoomIntro breaking html/aria list rules
* Fix HeaderButtons breaking aria role semantics rules
* missing type
* Switch left panel from aside to nav and include space panel
* Give the page a main heading of the room name when viewing a room
* Use header landmark on RoomHeader
* Improve aria attributes on composer when autocomplete is closed
* Fix aria-owns on RoomHeader
* Give Spinner an aria role
* Give server picker help button an aria label
* Improve auth aria attributes and semantics
* Improve heading semantics in use case selection screen
* Fix autocomplete attribute to be valid
* Fix heading semantics on login page
* Improve Cypress axe testing
* Add axe tests
* Stop synapse after the timeline tests
* Await spinners to fade before percy snapshotting timeline tests
* Improve naming of plugin
* Update snapshots
* Fix accidental heading change
* Fix double synapse stoppage
* Fix Cypress timeline avatar assertions to be DPI agnostic
* Fix aria attributes on date separators
* delint
* Update snapshots
* Revert style change
* Skip redundant call
* 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
* Early implementation of module API surface + functions for ILAG module
* Wire up dialog functions and ILAG-needed surface
* Ensure component renders for modules get overridden
* Respond to changes from module API interface
* Use a real module-api dependency
* Update for new Dialogs interface
* Add support for getConfigValue from module API
* Update the remainder of the module API interface
* Docs & cleanup
* Add some unit tests around module stuff
Needs end-to-end tests still.
* Appease early linters
* Break import cycles by not directly depending on Lifecycle
* Appease the linter
* Fix bad merge
* Revert "Prevent new composer from overflowing from non-breakable text (#8829)"
This reverts commit 57dff8131c.
* Revert "Fix scroll jump issue with the composer (#8791)"
This reverts commit 5167521ea4.
* Revert "Fix scroll jump issue with the composer (#8788)"
This reverts commit f568a76dc6.
* Revert "Revert link color change in composer (#8784)"
This reverts commit aedbeb2995.
* Revert "Improve composer visiblity (#8578)"
This reverts commit f14374a51c.
* 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
* 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
* Remove blank header from video room view frame
* Add a beta card for video rooms
* Rename the 'disclaimer' on beta cards to 'FAQ'
Because that's what the section actually gets used as
* Add beta pills to video room creation buttons
* Remove duplicate tooltips from face piles
* Add beta pill to headers of video rooms
* 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
* Add types
* Clarify !important comments
* Add a reload warning
* Fix the reload warning being the wrong way around
* Fix lints
* Make widgets in video rooms mutable again to de-risk future upgrades
* Ensure that the video channel exists when mounting VideoRoomView
* Fix lint
* Iterate beta reload warning
* 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>
* Improve widet buttons behaviour and layout
Relates to vector-im/element-web#20506
See PSC-79
Signed-off-by: Michael Weimann <michaelw@matrix.org>
* Add AppTile tests
* Add an option to ignore (block) a user when reporting their events
This is primarily useful if the content being reported really doesn't belong on your screen, and the room moderators are slow to react.
Ideally we'd use the word "block" instead of "ignore", but we call it "ignore user" everywhere else. See https://github.com/vector-im/element-web/issues/19590 for further context on the word choice.
This change includes a minor refactor to the styles of labelled toggles (for reusability).
* Appease the linter
* Use a checkbox instead of toggle in the dialog
* Update classnames handling for toggle switch
* Appease the linter
* Show simple file name and size on images/videos
Fixes https://github.com/vector-im/element-web/issues/18197
* i18n
* Fix bad merge
* Add hover state tracking
* Only show on timeline-like objects
* Match new design requirements
* Remove video support (deemed not needed)
* Colouring and sizing from design
* Include file name in lightbox
* Revert changes to videos since we don't need them
* i18n
* Iterate PR
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* 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
* add state for waiting for labs flag
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add enable live share component
Signed-off-by: Kerry Archibald <kerrya@element.io>
* test enabling live share labs flag
Signed-off-by: Kerry Archibald <kerrya@element.io>
* feat: introduce new alignment types for tooltip
* feat: introduce new hook for tooltips
* feat: allow using onFocus callback for RovingAccessibleButton
* feat: allow using custom class for ContextMenu
* feat: allow setting tab index for avatar
* refactor: move read receipts out of event tile
* feat: implement new read receipt design
* feat: update SentReceipt to match new read receipts as well
* Show a lobby screen in video rooms
* Add connecting state
* Test VideoRoomView
* Test VideoLobby
* Get the local video stream with useAsyncMemo
* Clean up code review nits
* Explicitly state what !important is overriding
* Use spacing variables
* Wait for video channel messaging
* Update join button copy
* Show frame on both the lobby and widget
* Force dark theme for video lobby
* Wait for the widget to be ready
* Make VideoChannelStore constructor private
* Allow video lobby to shrink
* Add invite button to video room header
* Show connected members on lobby screen
* Make avatars in video lobby clickable
* Increase video channel store timeout
* Fix Jitsi Meet getting wedged on startup in Chrome and Safari
* Revert "Fix Jitsi Meet getting wedged on startup in Chrome and Safari"
This reverts commit 9f77b8c227c1a5bffa5d91b0c48bf3bbc44d4cec.
* Disable device buttons while connecting
* Factor RoomFacePile into a separate file
* Fix i18n lint
* Fix switching video channels while connected
* Properly limit number of connected members in face pile
* Fix CSS lint
* fix-admin-tools-phrase-inconsistency
* correctly specify space room action
* run i18n
* Apply suggestions from code review
Revert the applied formatting.
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix inconsistency for RoomKickButton
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix-admin-tools-phrase-inconsistency
* correctly specify space room action
* run i18n
* Apply suggestions from code review
Revert the applied formatting.
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove radio component
* "Voice room" → "video room"
* Remove interactivity from video room tiles
* Update connection state when joining via widget
* Simplify room header buttons for video rooms
* Split out video room creation into a separate menu option
* Simplify room options for video rooms
* Update video room tile layout
* Tell the Jitsi widget whether it's a video channel
* Update tests
* "Voice" → "video" in more places
* Fix tests
* Re-add frame to immersive Jitsi widgets
* Comment ack
* Make updateDevices more readable
* Type FacePile
* expose wire errors in more useful way
* add wire error state to room live share warning bar
Signed-off-by: Kerry Archibald <kerrya@element.io>
* stylelint
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add types to getLabel helper
Signed-off-by: Kerry Archibald <kerrya@element.io>
* Remove deprecated feature_communities_v2_prototypes
* Update _components
* i18n
* delint
* Cut out a bit more dead code
* Carve into legacy components
* Carve into mostly the room list code
* Carve into instances of "groupId"
* Carve out more of what comes up with "groups"
* Carve out some settings
* ignore related groups state
* Remove instances of spacesEnabled
* Fix some obvious issues
* Remove now-unused css
* Fix variable naming for legacy components
* Update i18n
* Misc cleanup from manual review
* Update snapshot for changed flag
* Appease linters
* rethemedex
* Remove now-unused AddressPickerDialog
* Make ConfirmUserActionDialog's member a required prop
* Remove useless override from RightPanelStore
* Remove extraneous CSS
* Update i18n
* Demo: "Communities are now Spaces" landing page
* Restore linkify for group IDs
* Demo: Dialog on click for communities->spaces notice
* i18n for demos
* i18n post-merge
* Update copy
* Appease the linter
* Post-merge cleanup
* Re-add spaces_learn_more_url to the new SdkConfig place
* Round 1 of post-merge fixes
* i18n
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add voice room labs flag
Signed-off-by: Robin Townsend <robin@robin.town>
* Add more widget actions for interacting with Jitsi
Signed-off-by: Robin Townsend <robin@robin.town>
* Factor out a more generic Jitsi creation utility
Signed-off-by: Robin Townsend <robin@robin.town>
* Add utilities for managing voice channels
Signed-off-by: Robin Townsend <robin@robin.town>
* Enable creation of voice rooms
Signed-off-by: Robin Townsend <robin@robin.town>
* Force a maximized view of voice channel widgets
Signed-off-by: Robin Townsend <robin@robin.town>
* Add voice channel store
Signed-off-by: Robin Townsend <robin@robin.town>
* Factor out a more generic FacePile
Signed-off-by: Robin Townsend <robin@robin.town>
* Implement room tile changes for voice rooms
Signed-off-by: Robin Townsend <robin@robin.town>
* Add interactive radio component to the left panel
Signed-off-by: Robin Townsend <robin@robin.town>
* Test voice rooms
Signed-off-by: Robin Townsend <robin@robin.town>
* Update name of call room type
Signed-off-by: Robin Townsend <robin@robin.town>
* Clarify that voice rooms are under development
Signed-off-by: Robin Townsend <robin@robin.town>
* Use readonly
Signed-off-by: Robin Townsend <robin@robin.town>
* Move acks to the end of handlers
Signed-off-by: Robin Townsend <robin@robin.town>
* Add comment about avatar URLs coming from Jitsi
Signed-off-by: Robin Townsend <robin@robin.town>
* Don't use unicode ellipses
for translation reasons?
Signed-off-by: Robin Townsend <robin@robin.town>
* Fix tests
Signed-off-by: Robin Townsend <robin@robin.town>
* Fix tests, again
Signed-off-by: Robin Townsend <robin@robin.town>
* Remove unnecessary export
Signed-off-by: Robin Townsend <robin@robin.town>
* Ack Jitsi events when we wait for them
Signed-off-by: Robin Townsend <robin@robin.town>
* Allow keeping state events when removing recent messages
The remove recent messages dialog redacts most state events since they
can be abuse vectors as well, however some users that see the option
actually want to use it to only remove messages. This adds a checkbox
option to do so.
Signed-off-by: Robin Townsend <robin@robin.town>
* Don't redact encryption events when removing recent messages
Signed-off-by: Robin Townsend <robin@robin.town>
* Show UserMenu spinner while removing recent messages
This also generalizes the UserMenu spinner to work with other types of
actions in the future.
Signed-off-by: Robin Townsend <robin@robin.town>
* Clarify remove recent messages warning
Clarify that they are removed for everyone in the conversation, not just
yourself.
Signed-off-by: Robin Townsend <robin@robin.town>
* Adjust copy and preserve state events by default
* Redact messages in reverse chronological order
Signed-off-by: Robin Townsend <robin@robin.town>
Whitespace characters should not be hard-coded as some languages do not
have the concept of whitespace in the first place.
Fixes https://github.com/vector-im/element-web/issues/21187
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Add unexposed account setting for hiding poll creation
This is to match the sticker picker setting we already have, but not exposed in the user settings until we decide if we actually want it to be there.
This is primarily intended to be used in environments that disable it at the config level, though given there's multiple people in the wild who have asked for this, it seems reasonable to expose it as a hidden setting instead. Note that as of writing it's not clear if any of those requests made it as far as an issue tracker.
Typically for the usecase presented we'd add a new UIFeature flag, however this *feels* wrong for the case at hand.
* Move visibility check way higher
* Fix i18n post-merge
* Hide pinned messages header button when nothing is pinned
Signed-off-by: Robin Townsend <robin@robin.town>
* Add pinned messages option to room info panel
Signed-off-by: Robin Townsend <robin@robin.town>
* Add pinned messages option to room header menu
Signed-off-by: Robin Townsend <robin@robin.town>
* Make condition more concise
Signed-off-by: Robin Townsend <robin@robin.town>
* Add slash command to switch to a room's virtual room
* Update to new interface
* Return null if no virtual user
* Throw newTranslateableError
* Types
* Disable tovirtual if virtual rooms not supported
* Code style: Modernize
* Make Soft Logout page support Social Sign On
Fixes https://github.com/vector-im/element-web/issues/21099
This commit does a few things:
* Moves rendering of the flows to functions
* Adds a new login view enum for Password + SSO (mirroring logic from registration)
* Makes an absolute mess of the resulting diff
* Lint & i18n
* Remove spurious typing