mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-16 06:28:27 +02:00
feat: last admin works with owners (MESSENGER-7561)
This commit is contained in:
@@ -30,11 +30,16 @@ final class LeaveRoomHelper {
|
||||
var canLeave = false
|
||||
var hasInvites = false
|
||||
|
||||
// admins can only leave if there is at least one other admin
|
||||
// bwi #7561 add differenciation for admin and owner
|
||||
let myPowerLevel = self.powerLevel(session.myUserId, room)
|
||||
|
||||
// admins can only leave if there is at least one other admin or owner
|
||||
// owners can only leave if there is another owner
|
||||
room.state { (state) in
|
||||
if let members = state?.members.joinedMembers {
|
||||
for user in members where user.userId != myUserId {
|
||||
if self.isAdmin(user.userId, room) {
|
||||
if self.powerLevel(user.userId, room) >= myPowerLevel
|
||||
{
|
||||
canLeave = true
|
||||
break
|
||||
}
|
||||
@@ -52,6 +57,16 @@ final class LeaveRoomHelper {
|
||||
return canLeave
|
||||
}
|
||||
|
||||
static private func powerLevel(_ userId: String, _ room: MXRoom) -> Int {
|
||||
var powerLevel: Int = 0
|
||||
|
||||
room.state { (state) in
|
||||
powerLevel = state?.powerLevelOfUser(withUserID: userId) ?? 0
|
||||
}
|
||||
|
||||
return powerLevel
|
||||
}
|
||||
|
||||
static private func isAdmin(_ userId: String, _ room: MXRoom) -> Bool {
|
||||
var admin = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user