mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Last Owner should edit admins, and not leave when is last (#4372)
This commit is contained in:
@@ -342,15 +342,37 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
||||
return
|
||||
}
|
||||
|
||||
if !(roomProxy.infoPublisher.value.isPrivate ?? true) {
|
||||
state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isDirectOneToOneRoom, state: .public)
|
||||
} else {
|
||||
state.bindings.leaveRoomAlertItem = if roomProxy.infoPublisher.value.joinedMembersCount > 1 {
|
||||
LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isDirectOneToOneRoom, state: .private)
|
||||
} else {
|
||||
LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isDirectOneToOneRoom, state: .empty)
|
||||
guard roomProxy.infoPublisher.value.joinedMembersCount > 1 else {
|
||||
state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomID,
|
||||
isDM: roomProxy.isDirectOneToOneRoom,
|
||||
state: roomProxy.infoPublisher.value.isPrivate ?? true ? .empty : .public)
|
||||
return
|
||||
}
|
||||
|
||||
if !roomProxy.isDirectOneToOneRoom {
|
||||
if case let .success(ownMember) = await roomProxy.getMember(userID: roomProxy.ownUserID),
|
||||
ownMember.role.isOwner {
|
||||
await roomProxy.updateMembers()
|
||||
var isLastOwner = true
|
||||
for member in roomProxy.membersPublisher.value where member.userID != roomProxy.ownUserID {
|
||||
if member.role.isOwner {
|
||||
isLastOwner = false
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if isLastOwner {
|
||||
state.bindings.alertInfo = .init(id: UUID(),
|
||||
title: L10n.leaveRoomAlertSelectNewOwnerTitle,
|
||||
message: L10n.leaveRoomAlertSelectNewOwnerSubtitle,
|
||||
primaryButton: .init(title: L10n.actionCancel, role: .cancel, action: nil),
|
||||
secondaryButton: .init(title: L10n.leaveRoomAlertSelectNewOwnerAction, role: .destructive, action: { [weak self] in self?.actionsSubject.send(.transferOwnership(roomIdentifier: roomID)) }))
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isDirectOneToOneRoom, state: roomProxy.infoPublisher.value.isPrivate ?? true ? .private : .public)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user