Conversation
Stop using powerLevelNorm and reading PL events manually. To support matrix-org/matrix-js-sdk#4937
| export function isOnlyAdmin(room: Room, client: MatrixClient): boolean { | ||
| const currentUserLevel = room.getMember(client.getUserId()!)?.powerLevel; |
There was a problem hiding this comment.
- why not use
room.clientinstead of requiring an extra param - why not use
getSafeUserIdto avoid!
There was a problem hiding this comment.
For 1, only because the docs said it was for lazy loading members so I thought perhaps better to not use it generally, but happy to do so.
| export function isOnlyAdmin(room: Room, client: MatrixClient): boolean { | ||
| const currentUserLevel = room.getMember(client.getUserId()!)?.powerLevel; | ||
|
|
||
| const userLevelValues = room.getMembers().map((m) => m.powerLevel); |
There was a problem hiding this comment.
this assumes all members have already been loaded, which may not be the case due to lazyloading
There was a problem hiding this comment.
Won't this also potentially included invited/left members with high PLs?
There was a problem hiding this comment.
The fn you replaced used getJoinedMembers instead
There was a problem hiding this comment.
Mmm, it's true that lazy loading could potentially be an issue. Fixing this will involve making a leaveRoom async and loading members for every room in a space when we leave it. I'm not sure this is appropriate to do as part of this PR. I have added it to the doc.
t3chguy
left a comment
There was a problem hiding this comment.
Should we maybe add a lint rule or deprecation to powerLevelNorm to avoid using it in new code due to -footguns-
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
|
Well, I'll be removing it altogether shortly after merging this so that shouldn't be a problem. |
Changes in [1.11.110](https://github.com/element-hq/element-web/releases/tag/v1.11.110) (2025-08-27) ==================================================================================================== * Hide recovery key when re-entering it while creating or changing it ([#30499](element-hq/element-web#30499)). Contributed by @andybalaam. * Add `?no_universal_links=true` to OIDC url so EX doesn't try to handle it ([#29439](element-hq/element-web#29439)). Contributed by @t3chguy. * Show a blue lock for unencrypted rooms and hide the grey shield for encrypted rooms ([#30440](element-hq/element-web#30440)). Contributed by @langleyd. * Add support for Module API 1.4 ([#30185](element-hq/element-web#30185)). Contributed by @t3chguy. * MVVM - Introduce some helpers for snapshot management ([#30398](element-hq/element-web#30398)). Contributed by @MidhunSureshR. * A11y: move focus to right panel when opened ([#30553](element-hq/element-web#30553)). Contributed by @florianduros. * Fix e2e warning icon should be white ([#30539](element-hq/element-web#30539)). Contributed by @florianduros. * Remove NoOneHere disabled reason. ([#30524](element-hq/element-web#30524)). Contributed by @toger5. * Fix downloading files with authenticated media API ([#30520](element-hq/element-web#30520)). Contributed by @t3chguy. * Fix call permissions check confusion around element call ([#30521](element-hq/element-web#30521)). Contributed by @t3chguy. * Fix line wrap around emoji verification ([#30523](element-hq/element-web#30523)). Contributed by @t3chguy. * Don't highlight redacted events ([#30519](element-hq/element-web#30519)). Contributed by @t3chguy. * Fix matrix.to links not being handled in the app ([#30522](element-hq/element-web#30522)). Contributed by @t3chguy. * Fix issue of new room list taking up the full width ([#30459](element-hq/element-web#30459)). Contributed by @langleyd. * Fix widget persistence in React development mode ([#30509](element-hq/element-web#30509)). Contributed by @robintown. * Fix widget initialization in React development mode ([#30463](element-hq/element-web#30463)). Contributed by @robintown. Changes in [1.11.109](https://github.com/element-hq/element-web/releases/tag/v1.11.109) (2025-08-11) ==================================================================================================== This release supports the upcoming v12 ("hydra") Matrix room version and is necessary to view and participate in these rooms. * [Backport staging] Allow /upgraderoom command without developer mode enabled ([#30529](element-hq/element-web#30529)). Contributed by @RiotRobot. * [Backport staging] Support for creator/owner power level ([#30526](element-hq/element-web#30526)). Contributed by @RiotRobot. * New room list: change icon and label of menu item for to start a DM ([#30470](element-hq/element-web#30470)). Contributed by @florianduros. * Implement the member list with virtuoso ([#29869](element-hq/element-web#29869)). Contributed by @langleyd. * Add labs option for history sharing on invite ([#30313](element-hq/element-web#30313)). Contributed by @richvdh. * Bump wysiwyg to 2.39.0 adding support for pasting rich text content in the Rich Text Edtior ([#30421](element-hq/element-web#30421)). Contributed by @langleyd. * Support `EventShieldReason.MISMATCHED_SENDER` ([#30403](element-hq/element-web#30403)). Contributed by @richvdh. * Change unencrypted and public pills to blue ([#30399](element-hq/element-web#30399)). Contributed by @florianduros. * Change color of public room icon ([#30390](element-hq/element-web#30390)). Contributed by @florianduros. * Script for updating storybook screenshots ([#30340](element-hq/element-web#30340)). Contributed by @dbkr. * Add toggle to hide empty state in devtools ([#30352](element-hq/element-web#30352)). Contributed by @toger5. * [Backport staging] Use userId to filter users in non-federated rooms when showing the InviteDialog ([#30537](element-hq/element-web#30537)). Contributed by @RiotRobot. * [Backport staging] Catch error when encountering invalid m.room.pinned\_events event ([#30536](element-hq/element-web#30536)). Contributed by @RiotRobot. * Update for compatibility with v12 rooms ([#30452](element-hq/element-web#30452)). Contributed by @dbkr. * New room list: fix tooltip on presence ([#30474](element-hq/element-web#30474)). Contributed by @florianduros. * New room list: add tooltip for presence and room status ([#30472](element-hq/element-web#30472)). Contributed by @florianduros. * Fix: Clicking on an item in the member list causes it to scroll to the top rather than show the profile view ([#30455](element-hq/element-web#30455)). Contributed by @langleyd. * Put the 'decrypting' tooltip back ([#30446](element-hq/element-web#30446)). Contributed by @dbkr. * Use server name explicitly for via. ([#30362](element-hq/element-web#30362)). Contributed by @Half-Shot. * fix: replace hardcoded string in poll history dialog ([#30402](element-hq/element-web#30402)). Contributed by @florianduros. * fix: replace hardcoded string on qr code back button ([#30401](element-hq/element-web#30401)). Contributed by @florianduros. * Fix color of icon button with outline ([#30361](element-hq/element-web#30361)). Contributed by @florianduros. Changes in [1.11.108](https://github.com/element-hq/element-web/releases/tag/v1.11.108) (2025-07-30) ==================================================================================================== * [Backport staging] Fix downloaded attachments not being decrypted ([#30434](element-hq/element-web#30434)). Contributed by @RiotRobot. Changes in [1.11.107](https://github.com/element-hq/element-web/releases/tag/v1.11.107) (2025-07-29) ==================================================================================================== * Message preview should show tooltip with the full message on hover ([#30265](element-hq/element-web#30265)). Contributed by @MidhunSureshR. * Support rendering notification badges on platforms that do their own icon overlays ([#30315](element-hq/element-web#30315)). Contributed by @Half-Shot. * Add SubscriptionViewModel base class ([#30297](element-hq/element-web#30297)). Contributed by @dbkr. * Enhancement: Save image on CTRL+S ([#30330](element-hq/element-web#30330)). Contributed by @ioalexander. * Add quote functionality to MessageContextMenu (#29893) ([#30323](element-hq/element-web#30323)). Contributed by @AlirezaMrtz. * Initial structure for shared component views ([#30216](element-hq/element-web#30216)). Contributed by @dbkr. * [Backport staging] Fix e2e shield being invisible in white mode for encrypted room ([#30411](element-hq/element-web#30411)). Contributed by @RiotRobot. * Force ED titlebar color for new room list ([#30332](element-hq/element-web#30332)). Contributed by @florianduros. * Add a background color to left panel for macos titlebar in element desktop ([#30328](element-hq/element-web#30328)). Contributed by @florianduros. * Fix: Prevent page refresh on Enter key in right panel member search ([#30312](element-hq/element-web#30312)). Contributed by @AlirezaMrtz.
* Update for compatibility with v12 rooms Stop using powerLevelNorm and reading PL events manually. To support matrix-org/matrix-js-sdk#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>
Stop using powerLevelNorm and reading PL events manually.
To support matrix-org/matrix-js-sdk#4937 (but can be merged before).
Checklist
public/exportedsymbols have accurate TSDoc documentation.