Fix showing permissions settings for v12 rooms
This commit is contained in:
@@ -93,6 +93,9 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const
|
||||
return QVariant::fromValue(memberId);
|
||||
}
|
||||
if (role == PowerLevelRole) {
|
||||
if (m_currentRoom->isCreator(memberId)) {
|
||||
return std::numeric_limits<int>::max();
|
||||
}
|
||||
auto plEvent = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
|
||||
if (!plEvent) {
|
||||
return 0;
|
||||
@@ -118,6 +121,9 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const
|
||||
PowerLevel::nameForLevel(PowerLevel::levelForValue(userPl)),
|
||||
userPl);
|
||||
}
|
||||
if (role == IsCreatorRole) {
|
||||
return m_currentRoom->isCreator(memberId);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
@@ -219,6 +225,7 @@ QHash<int, QByteArray> UserListModel::roleNames() const
|
||||
roles[ObjectRole] = "user";
|
||||
roles[PowerLevelRole] = "powerLevel";
|
||||
roles[PowerLevelStringRole] = "powerLevelString";
|
||||
roles[IsCreatorRole] = "isCreator";
|
||||
|
||||
return roles;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
ObjectRole, /**< The QObject for the user. */
|
||||
PowerLevelRole, /**< The user's power level in the current room. */
|
||||
PowerLevelStringRole, /**< The name of the user's power level in the current room. */
|
||||
IsCreatorRole, /**< Whether this user is considered a creator of the current room. */
|
||||
};
|
||||
Q_ENUM(EventRoles)
|
||||
|
||||
|
||||
@@ -605,7 +605,7 @@ public:
|
||||
*
|
||||
* For unusual room versions, this information might be wrong.
|
||||
*/
|
||||
bool roomCreatorHasUltimatePowerLevel() const;
|
||||
Q_INVOKABLE bool roomCreatorHasUltimatePowerLevel() const;
|
||||
|
||||
/**
|
||||
* @brief Whether this user is considered a creator of this room. Only applies to post-v12 rooms.
|
||||
|
||||
@@ -22,6 +22,8 @@ FormCard.FormCardPage {
|
||||
|
||||
title: i18nc('@title:window', 'Permissions')
|
||||
|
||||
readonly property bool loading: permissions.count === 0 && !root.room.roomCreatorHasUltimatePowerLevel()
|
||||
|
||||
readonly property PowerLevelModel powerLevelModel: PowerLevelModel {
|
||||
showMute: false
|
||||
}
|
||||
@@ -32,10 +34,11 @@ FormCard.FormCardPage {
|
||||
|
||||
FormCard.FormHeader {
|
||||
title: i18nc("@title", "Privileged Users")
|
||||
visible: permissions.count > 0
|
||||
visible: !root.loading
|
||||
}
|
||||
FormCard.FormCard {
|
||||
visible: permissions.count > 0
|
||||
visible: !root.loading
|
||||
|
||||
Repeater {
|
||||
id: permissions
|
||||
model: KSortFilterProxyModel {
|
||||
@@ -53,6 +56,7 @@ FormCard.FormCardPage {
|
||||
required property string name
|
||||
required property int powerLevel
|
||||
required property string powerLevelString
|
||||
required property bool isCreator
|
||||
|
||||
text: name
|
||||
textItem.textFormat: Text.PlainText
|
||||
@@ -62,7 +66,7 @@ FormCard.FormCardPage {
|
||||
QQC2.Label {
|
||||
id: powerLevelLabel
|
||||
text: privilegedUserDelegate.powerLevelString
|
||||
visible: !root.room.canSendState("m.room.power_levels") || (root.room.memberEffectivePowerLevel(root.room.localMember.id) <= privilegedUserDelegate.powerLevel && privilegedUserDelegate.userId != root.room.localMember.id)
|
||||
visible: (!root.room.canSendState("m.room.power_levels") || (root.room.memberEffectivePowerLevel(root.room.localMember.id) <= privilegedUserDelegate.powerLevel && privilegedUserDelegate.userId != root.room.localMember.id)) || privilegedUserDelegate.isCreator
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
}
|
||||
QQC2.ComboBox {
|
||||
@@ -400,7 +404,7 @@ FormCard.FormCardPage {
|
||||
}
|
||||
|
||||
Item {
|
||||
visible: permissions.count === 0
|
||||
visible: root.loading
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: root.height * 0.9
|
||||
Kirigami.LoadingPlaceholder {
|
||||
|
||||
Reference in New Issue
Block a user