Support for creator/owner power level (#30525)

* Support for creator/owner power level

This just shows them as 'Owner' in the list.

* Add test for owner level
This commit is contained in:
David Baker
2025-08-08 14:20:02 +01:00
committed by GitHub
parent 227c8ff1cd
commit 96dbddcb14
4 changed files with 13 additions and 6 deletions

View File

@@ -31,11 +31,13 @@ export interface MemberTileViewState extends MemberTileViewModelProps {
}
export enum PowerStatus {
Creator = "creator",
Admin = "admin",
Moderator = "moderator",
}
const PowerLabel: Record<PowerStatus, TranslationKey> = {
[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],
]);

View File

@@ -348,10 +348,7 @@ export default class RolesRoomSettingsTab extends React.Component<IProps, RolesR
powerLevelDescriptors.users_default.defaultValue,
);
let currentUserLevel = userLevels[client.getUserId()!];
if (currentUserLevel === undefined) {
currentUserLevel = defaultUserLevel;
}
const currentUserLevel = room.getMember(client.getSafeUserId())?.powerLevel ?? defaultUserLevel;
this.populateDefaultPlEvents(
eventsLevels,

View File

@@ -1763,6 +1763,7 @@
},
"power_level": {
"admin": "Admin",
"creator": "Owner",
"custom": "Custom (%(level)s)",
"custom_level": "Custom level",
"default": "Default",

View File

@@ -98,11 +98,17 @@ describe("MemberTileView", () => {
);
expect(container2).toHaveTextContent("Admin");
member.isInvite = true;
member.powerLevel = Infinity;
const { container: container3 } = render(
<RoomMemberTileView member={member} index={0} memberCount={1} onFocus={jest.fn()} />,
);
expect(container3).toHaveTextContent("Invited");
expect(container3).toHaveTextContent("Owner");
member.isInvite = true;
const { container: container4 } = render(
<RoomMemberTileView member={member} index={0} memberCount={1} onFocus={jest.fn()} />,
);
expect(container4).toHaveTextContent("Invited");
});
});