Restore permissions to creator and display them as owners in the list (#4369)
* restore permissions to creator and display them as owners in the list * improved the code to use actually 5 roles in the app to distinguish a real creator from an owner
This commit is contained in:
@@ -86,17 +86,34 @@ extension RoomPermissions {
|
||||
|
||||
extension RoomMemberDetails.Role {
|
||||
init(powerLevelValue: Int64) {
|
||||
// Also this is not great, and should be handled by a `suggestedRoleForPowerLevelValue` function from the SDK
|
||||
guard powerLevelValue < 150 else {
|
||||
self = .owner
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
try self.init(suggestedRoleForPowerLevel(powerLevel: .value(value: powerLevelValue)))
|
||||
switch try suggestedRoleForPowerLevel(powerLevel: .value(value: powerLevelValue)) {
|
||||
case .administrator:
|
||||
self = .administrator
|
||||
case .creator:
|
||||
fatalError("Impossible")
|
||||
case .moderator:
|
||||
self = .moderator
|
||||
case .user:
|
||||
self = .user
|
||||
}
|
||||
} catch {
|
||||
MXLog.error("Falied to convert power level value to role: \(error)")
|
||||
self.init(.user)
|
||||
self = .user
|
||||
}
|
||||
}
|
||||
|
||||
var rustRole: RoomMemberRole {
|
||||
switch self {
|
||||
case .administrator:
|
||||
case .creator:
|
||||
.creator
|
||||
case .administrator, .owner:
|
||||
.administrator
|
||||
case .moderator:
|
||||
.moderator
|
||||
@@ -108,11 +125,15 @@ extension RoomMemberDetails.Role {
|
||||
/// To be used when setting the power level of a user to get the suggested equivalent power level value for that specific role
|
||||
/// NOTE: Do not use for comparison, use the true power level instead.
|
||||
var powerLevelValue: Int64 {
|
||||
guard self != .owner else {
|
||||
// Would be better if the SDK would return this, maybe a `suggestedPowerLevelValueForRole` function would solve the problem
|
||||
return 150
|
||||
}
|
||||
|
||||
do {
|
||||
switch try suggestedPowerLevelForRole(role: rustRole) {
|
||||
case .infinite:
|
||||
// Would be better if the SDK would return this, maybe a `suggestedPowerLevelValueForRole` function would solve the problem
|
||||
return 150
|
||||
fatalError("Impossible")
|
||||
case .value(let value):
|
||||
return value
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user