* Hide recovery key when asked to re-enter it when creating or changing key
* Use align-self to centre the eye icon
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS vars for padding
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS classes to avoid needing the highly specific rule
* Use a Compound variable for border width
* Add classes to snapshots
* Update screenshots
---------
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Move `inviteUsersToRoom` to `RoomUpgrade`
This method is only used in one place, uses only public methods, and is
undocumented. Let's move it to the place where it is used, to simplify the API
for `RoomInvite`.
* Simplify `inviteUsersToRoom`
`inviteMultipleToRoom` basically never throws, so this code was effectively
unreachable.
* Update MultiInviter to take an options object
I'm going to add another option, so an options object is going to be more
flexible.
* Jump through the coverage hoop with another test
* Remove NoOneHere disabled reason.
This was used to prohibit starting calls if the user is alone in the room.
Since there are currently issues with the user count calculation this can disable the button even when not appropriate.
On top of that, there is a reason to start a call if the room was just created and the user is still waiting for the others to join the room to then join the call.
Signed-off-by: Timo K <toger5@hotmail.de>
* some ci fixes
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test snapshots
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test to expect enabled call buttons
* Update snapshot for unit-tests/components/views/rooms/RoomHeader/RoomHeader-test.tsx
---------
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: fkwp <github-fkwp@w4ve.de>
* Remove unreferenced CSS class `mx_InviteDialog_hasFooter`
This is never used in the CSS (or elsewhere), so let's remove it
* Move `consultConnectSection` initialization
Since this only used and set when `kind === InviteKind.CallTransfer`, we can
simplify
* Factor out `title` logic
Move the logic for caclulating the title to a separate method. I want to be
able to reference it from a couple of places, so it will be easier if it is a
separate method.
(We'll actually be inlining it again later in this PR)
* Factor out `renderMainTab` method
Break the big `render` method in half by pulling the `usersSection` out into a
separate method.
* Split out `renderRegularDialog` and `renderCallTransferDialog`
`render` is now almost entirely two separate flows, so let's spit it into two
separate methods. Recommend reviewing this commit with whitespace changes
hidden.
* Inline `getTitle`
This method has served its purpose: we can now inline it again.
* Factor out `renderSuggestions`
Break up `renderMainTab` a bit more: pull out a new method which renders the
"suggestions" bit of the dialog, together with the associated warnings and footer.
It would previously say no permission if you had no perms for an EC call but had perms for a legacy call.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix downloading files with authenticated media API
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add `?no_universal_links=true` to OIDC cb url so EX doesn't try to handle it
This is specific to macOS and only affects cases where auth is attempted in the non-default browser
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Strip no_universal_links after auth
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update MAS
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright-common
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>
* Bump @element-hq/element-web-playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Show a blue lock instead of a grey shield for unencrypted rooms
* Update screenshots and snapshot
* Update snapshots and fix e2e test that used to expect the grey shield
* lint and add tests for shield
* Update more screen shots
* finish unit test for left icon
* Remove unneeded check
* Don't bother adding stray props to E2EIcon for data-testid
* Upate snapshots
* Add support for Module API 1.3.0
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing import
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>
* Fix import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Bump module API
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update module API and remove jest stub
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test mocks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Allow /upgraderoom command without developer mode enabled
This will make the instructions for upgrading rooms for hydra a lot
more straightforward, so maybe let's do this at least while hydra
upgrades happen.
* Update test to match
* Unused imports
* Better handle for resizer for new room list that doesn't support collapsing.
* Add unit test
* Test the new guards/checks on resize
* Finish cleaning up mock resets
* [create-pull-request] automated change
* First pass of fixing tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Second pass of fixing tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Third pass of fixing tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* MultiInviter: remove cancellation support
This is unused and untested, so we can basically assume it doesn't work.
* MultiInviter: factor out `handleUnknownProfileUsers` method
* MultiInviter: remove unused `ignoreProfile` arg from `inviteMore`
* MultiInviter: simplify `deferred` usage
No point in doing `deferred.resolve(this.completionStates)` everywhere
* MultiInviter.doInvite: do not `reject` for known fatal errors
Using `reject` for known, handled, fatal errors is somewhat confusing here,
since it looks like we swallow the error. (It's actually up to the caller to
check the recoreded `errors` and report them.)
Rather than rejecting, rely on the `_fatal` flag.
* MultiInviter: move finish logic to `.invite`
... for less `deferred` complication
* MultiInviter: rewrite loop as a `for` loop
Async functions are a thing in modern javascript, and way easier to grok than a
stack of promises.
* Move Element Call event types to a more appropriate file
To remove the potential for import cycles in src/models/Call.ts, which I was accidentally creating when I tried to reference data from the RoomListStore in the ElementCall class.
* Make sure ElementCall tests clean up the call object
* Upgrade Element Call to v0.14.1
* Delegate the sending of call notifications to Element Call
As of Element Call version 0.14.0, the widget is now capable of sending call notifications itself if we just request this with the sendNotificationType URL parameter. This makes Element Web's group call code a little bit more succinct.
* Fix createRoom test
* feat: add `PlayPauseButton` to storybook
* feat: add generic media body
* feat: add seekbar component
* chore: add ViewWrapper to help writing stories with vm
* refactor: move `formatBytes` from `formattingUtils` into shared component
* refactor: add `className` props to `Clock`
* feat: add new audio player component
* test(e2e): add screenshots for new shared components
* feat: add AudioPlayerViewModel
* feat: use new audio player in `MAudioBody`
* refactor: remove old audio player
* test(e2e): update existing tests
* refactor: remove unused `DurationClock`
* refactor: rename `SeekBar` into `LegacySeekBar`
15f1291cbcbb5920f87fd0ea73dba27ce12d91b1 was really close to making widgets just work again in React development mode following the upgrade to React 19, but I forgot to test one thing: that persistent widgets (such as Element Call) still reuse the same iframe across their entire lifecycle as expected. The solution is to not manually destroy the iframe when AppTile is being unmounted; even if it turns out that the widget isn't actually persistent, React will still destroy it automatically for us.
* Introduce snapshot class to track snapshot updates
This avoids the hassle of having to manually call emit.
* Better viewmodel ergonomics
- Rename `SubscriptionViewModel` to `BaseViewModel`. I feel this is
appropriate since that class does more than just manage subscriptions.
- `getSnapshot` is no longer an abstract method. It's simply a method
that returns the current snapshot state. This ensures that getSnapshot
result is cached by default which is required by `useSyncExternalStore`.
- `props` are a property of the base vm class so that actual VMs don't
have to keep creating this property.
* Update `TextualEventViewModel`
* Fix test
* Rename `TextualEvent` to `TextualEventView`
* Fix snapshot object not being merged
* Rename directory to `EventTileView`
* Fix broken snapshot
* Add test for snapshot class
Since the upgrade to React 19, widget initialization (most notably affecting group calls) has been broken in development mode. This is because React now executes all callback refs twice, and the callback ref that receives the widget's iframe was not prepared to deal with that. I've fixed this by creating and attaching the iframe to the DOM in the callback ref, which allows us to properly couple its lifetime to that of the StopGapWidget. I've also added some insurance against strict mode-style races in StopGapWidget (doesn't hurt).
* Update for compatibility with v12 rooms
Stop using powerLevelNorm and reading PL events manually.
To support https://github.com/matrix-org/matrix-js-sdk/pull/4937
* Add test for leave space dialog
* Don't compute stuff if we don't need it
* Use room.client
* Use getSafeUserId
* Remove client arg
* Use getJoinedMembers
and add doc
* Fix tests
* Fix more tests
* Fix other test
* Clarify comment
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* implement basic scrolling and keyboard navigation
* Update focus style and improve keyboard navigation
* lint
* Use avatar tootltip for the title rather than the whole button
It's more performant and feels less glitchy than the button tooltip moving around when you scroll.
* lint
* Add tooltip for invite buttons active state
As we have for other icon based buttons in the right panel/app
* Fix location of scrollToIndex and add useCallback
* Improve voiceover experience
- As well as stylng cells, set the tabIndex(roving)
- Natively focus the div with .focus() so screen reader actually moves over the cells
- improve labels and roles
* Fix jest tests
* Add aria index/counts and remove repeating "Open" string in label
* update snapshot
* Add the rest of the keyboard navigation and handle the case when the list looses focus.
* lint and update snapshot
* lint
* Only focus first/lastFocsed cell if focus.currentTarget is the overall list.
So it isn't erroneously called during onClick of an item.
* Put back overscan and fix formatting
* Extract ListView out of MemberList
* lint and fix e2e test
* Update screenshot
It looks like it is slightly better center aligned in the new list, as if maybe it was 1 px to high with the old one.
* Fix default overscan value and add ListView tests
* Just leave the avatar as it was
* We removed the tooltip that showed power level. Removing string.
* Use key rather than index to track focus.
* Remove overscan, fix typos, fix scrollToItem logic
* Use listbox role for member list and correct position/count values to account for the separator
* Fix inadvertant scrolling of the timeline when using pageUp/pageDown
* Always set the roving tab index regardless of whether we are actually focused.
Fixes the issue of not being able to shift+t
* Add aria-hidden to items within the option to avoid the SR calling it a group.
Also
* Make sure there is a roving tab set if the last one has been removed from the list.
* Update snapshot
* Add labs option for "share history on invite"
* Set `acceptSharedHistory` when joining a room
* set `shareEncryptedHistory` when sending an invite
* Update src/i18n/strings/en_EN.json
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
These deprecated parameters will be removed very soon (planned for Element Call version 0.15.0) and we no longer have to care about backward compatibility with old versions of Element Call (due to the embedding/bundling work), so now is the right time to migrate.
* Allow Element Call to send call notifications
Currently Element Web is responsible for sending the call notification event, but this is planned to be changed soon. As of the upcoming Element Call 0.14.0 release, it will request the capability to send call notifications itself, and we should auto-approve this capability.
* Add reaction capability missing from test
Element Call does in fact request this one.