Fixes for v12 power levels

This commit is contained in:
Tobias Fella
2025-12-25 22:29:07 +01:00
committed by Tobias Fella
parent 82f54b4f2c
commit 657c8a0dcd
4 changed files with 15 additions and 3 deletions

View File

@@ -300,7 +300,7 @@ Kirigami.Dialog {
} }
QQC2.Button { QQC2.Button {
visible: root.room.canSendState("m.room.power_levels") visible: root.room.canSendState("m.room.power_levels") && !(root.room.roomCreatorHasUltimatePowerLevel() && root.room.isCreator(root.user.id))
text: i18nc("@action:button Set the power level (such as 'Admin') for this user", "Set Power Level") text: i18nc("@action:button Set the power level (such as 'Admin') for this user", "Set Power Level")
icon.name: "document-edit-symbolic" icon.name: "document-edit-symbolic"
display: QQC2.AbstractButton.IconOnly display: QQC2.AbstractButton.IconOnly

View File

@@ -12,6 +12,10 @@ QString PowerLevel::nameForLevel(Level level)
return i18n("Moderator"); return i18n("Moderator");
case PowerLevel::Admin: case PowerLevel::Admin:
return i18n("Admin"); return i18n("Admin");
case PowerLevel::Owner:
return i18nc("The person that owns a room", "Owner");
case PowerLevel::Creator:
return i18nc("The person that created a room", "Creator");
case PowerLevel::Mute: case PowerLevel::Mute:
return i18n("Mute"); return i18n("Mute");
case PowerLevel::Custom: case PowerLevel::Custom:
@@ -30,6 +34,8 @@ int PowerLevel::valueForLevel(Level level)
return 50; return 50;
case PowerLevel::Admin: case PowerLevel::Admin:
return 100; return 100;
case PowerLevel::Owner:
return 150;
case PowerLevel::Mute: case PowerLevel::Mute:
return -1; return -1;
default: default:
@@ -46,8 +52,12 @@ PowerLevel::Level PowerLevel::levelForValue(int value)
return PowerLevel::Moderator; return PowerLevel::Moderator;
case 100: case 100:
return PowerLevel::Admin; return PowerLevel::Admin;
case 150:
return PowerLevel::Owner;
case -1: case -1:
return PowerLevel::Mute; return PowerLevel::Mute;
case std::numeric_limits<int>::max():
return PowerLevel::Creator;
default: default:
return PowerLevel::Custom; return PowerLevel::Custom;
} }

View File

@@ -31,10 +31,12 @@ public:
enum Level { enum Level {
Member, /**< A basic member. */ Member, /**< A basic member. */
Moderator, /**< A moderator with enhanced powers. */ Moderator, /**< A moderator with enhanced powers. */
Admin, /**< The highest power level in the room. */ Admin, /**< Power level 100. */
Owner, /**< Power level 150. */
Mute, /**< The level to remove posting privileges. */ Mute, /**< The level to remove posting privileges. */
NUMLevels, NUMLevels,
Custom, /**< A non-standard value. Intentionally after NUMLevels so it doesn't appear in the model. */ Custom, /**< A non-standard value. Intentionally after NUMLevels so it doesn't appear in the model. */
Creator, /**< The user creating the (co-)creating the room. */
}; };
Q_ENUM(Level); Q_ENUM(Level);

View File

@@ -615,7 +615,7 @@ public:
/** /**
* @brief Whether this user is considered a creator of this room. Only applies to post-v12 rooms. * @brief Whether this user is considered a creator of this room. Only applies to post-v12 rooms.
*/ */
bool isCreator(const QString &userId) const; Q_INVOKABLE bool isCreator(const QString &userId) const;
/** /**
* @return The most recent pinned message in the room. * @return The most recent pinned message in the room.