From adfa43dcbb83cc8d25a93203ec451d0644c9085f Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Fri, 8 Aug 2025 16:28:52 +0200 Subject: [PATCH] Support for creator/owner power level (#30525) (#30526) * Support for creator/owner power level This just shows them as 'Owner' in the list. * Add test for owner level (cherry picked from commit 96dbddcb14c2fb8637aa09426c1df1686edbd9bc) Co-authored-by: David Baker --- .../memberlist/tiles/MemberTileViewModel.tsx | 3 +++ .../views/settings/tabs/room/RolesRoomSettingsTab.tsx | 5 +---- src/i18n/strings/en_EN.json | 1 + .../views/rooms/memberlist/MemberTileView-test.tsx | 10 ++++++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx index 0355fe47a3..d99c127d85 100644 --- a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx +++ b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx @@ -31,11 +31,13 @@ export interface MemberTileViewState extends MemberTileViewModelProps { } export enum PowerStatus { + Creator = "creator", Admin = "admin", Moderator = "moderator", } const PowerLabel: Record = { + [PowerStatus.Creator]: _td("power_level|creator"), [PowerStatus.Admin]: _td("power_level|admin"), [PowerStatus.Moderator]: _td("power_level|moderator"), }; @@ -115,6 +117,7 @@ export function useMemberTileViewModel(props: MemberTileViewModelProps): MemberT const name = props.member.name; const powerStatusMap = new Map([ + [Infinity, PowerStatus.Creator], [100, PowerStatus.Admin], [50, PowerStatus.Moderator], ]); diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx index c44812d618..5b6d200e71 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx @@ -348,10 +348,7 @@ export default class RolesRoomSettingsTab extends React.Component { ); expect(container2).toHaveTextContent("Admin"); - member.isInvite = true; + member.powerLevel = Infinity; const { container: container3 } = render( , ); - expect(container3).toHaveTextContent("Invited"); + expect(container3).toHaveTextContent("Owner"); + + member.isInvite = true; + const { container: container4 } = render( + , + ); + expect(container4).toHaveTextContent("Invited"); }); });