Merge branch 'develop' into feature/7564_migration_part_1_banner

# Conflicts:
#	Riot/Assets/de.lproj/Bwi.strings
#	Riot/Assets/en.lproj/Bwi.strings
This commit is contained in:
Jan Niklas Grabowski
2025-09-23 11:14:28 +02:00
6 changed files with 34 additions and 4 deletions

View File

@@ -775,3 +775,7 @@
"bwi_mobile_dialog_m_more_success" = "Benutzername kopiert";
"bwi_a11y_close_button" = "Ansicht schließen";
// MARK owner handling
"room_member_power_level_owner_in" = "Inhaber von %@";
"room_member_power_level_short_owner" = "Inhaber";

View File

@@ -688,3 +688,6 @@
"bwi_a11y_close_button" = "Close window";
// MARK owner handling
"room_member_power_level_owner_in" = "Owner in %@";
"room_member_power_level_short_owner" = "Owner";

View File

@@ -1491,6 +1491,14 @@ public class BWIL10n: NSObject {
public static func roomMemberPowerLevelModeratorIn(_ p1: String) -> String {
return BWIL10n.tr("Bwi", "room_member_power_level_moderator_in", p1)
}
/// Inhaber von %@
public static func roomMemberPowerLevelOwnerIn(_ p1: String) -> String {
return BWIL10n.tr("Bwi", "room_member_power_level_owner_in", p1)
}
/// Inhaber
public static var roomMemberPowerLevelShortOwner: String {
return BWIL10n.tr("Bwi", "room_member_power_level_short_owner")
}
/// Es gelten globale Benachrichtigungseinstellungen
public static var roomNotifsSettingsAllDescription: String {
return BWIL10n.tr("Bwi", "room_notifs_settings_all_description")

View File

@@ -426,7 +426,7 @@ Please see LICENSE in the repository root for full details.
switch (roomPowerLevel) {
case RoomPowerLevelOwner:
self.roomMemberPowerLevelLabel.text = [VectorL10n roomMemberPowerLevelOwnerIn:self.mxRoom.summary.displayName];
self.roomMemberPowerLevelLabel.text = [BWIL10n roomMemberPowerLevelOwnerIn:self.mxRoom.summary.displayName];
self.roomMemberPowerLevelContainerView.hidden = NO;
break;
case RoomPowerLevelAdmin:

View File

@@ -1100,7 +1100,7 @@ Please see LICENSE in the repository root for full details.
switch (roomPowerLevel) {
case RoomPowerLevelOwner:
powerLevelText = [VectorL10n roomMemberPowerLevelShortOwner];
powerLevelText = [BWIL10n roomMemberPowerLevelShortOwner];
break;
case RoomPowerLevelAdmin:
powerLevelText = [VectorL10n roomMemberPowerLevelShortAdmin];

View File

@@ -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