some iOS bugfixes (#3732)

Co-authored-by: Element CI <ci@element.io>
This commit is contained in:
Mauro
2025-02-04 01:15:31 +01:00
committed by GitHub
parent 10d39257f0
commit 5d785b38ae
3 changed files with 19 additions and 2 deletions
@@ -29,7 +29,7 @@ struct JoinRoomScreenRoomDetails {
let topic: String?
let canonicalAlias: String?
let avatar: RoomAvatar
let memberCount: UInt
let memberCount: Int
let inviter: RoomInviterDetails?
}
@@ -19,6 +19,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
private var roomPreview: RoomPreviewProxyProtocol?
private var room: RoomProxyType?
private var membershipStateChangeCancellable: AnyCancellable?
private let actionsSubject: PassthroughSubject<JoinRoomScreenViewModelAction, Never> = .init()
var actionsPublisher: AnyPublisher<JoinRoomScreenViewModelAction, Never> {
@@ -101,6 +102,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
}
private func updateRoomDetails() async {
membershipStateChangeCancellable = nil
var roomInfo: BaseRoomInfoProxyProtocol?
var inviter: RoomInviterDetails?
@@ -112,6 +114,19 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
roomInfo = invitedRoomProxy.info
case .knocked(let knockedRoomProxy):
roomInfo = knockedRoomProxy.info
if let roomSummaryProvider = clientProxy.roomSummaryProvider {
membershipStateChangeCancellable = roomSummaryProvider.roomListPublisher
.compactMap { summaries -> Void? in
guard let roomSummary = summaries.first(where: { $0.id == roomInfo?.id }),
roomSummary.roomListItem.membership() != .knocked else {
return nil
}
return ()
}
.sink { [weak self] in
Task { await self?.loadRoomDetails() }
}
}
default:
break
}
@@ -121,7 +136,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
topic: info?.topic,
canonicalAlias: info?.canonicalAlias,
avatar: info?.avatar ?? .room(id: roomID, name: info?.displayName ?? "", avatarURL: nil),
memberCount: UInt(info?.activeMembersCount ?? 0),
memberCount: info?.joinedMembersCount ?? 0,
inviter: inviter)
await updateMode()
@@ -16,6 +16,7 @@ protocol BaseRoomInfoProxyProtocol {
var canonicalAlias: String? { get }
var avatarURL: URL? { get }
var activeMembersCount: Int { get }
var joinedMembersCount: Int { get }
var isDirect: Bool { get }
var isSpace: Bool { get }
}
@@ -112,6 +113,7 @@ struct RoomPreviewInfoProxy: BaseRoomInfoProxyProtocol {
var isDirect: Bool { roomPreviewInfo.isDirect ?? false }
var isSpace: Bool { roomPreviewInfo.roomType == .space }
var activeMembersCount: Int { Int(roomPreviewInfo.numActiveMembers ?? roomPreviewInfo.numJoinedMembers) }
var joinedMembersCount: Int { Int(roomPreviewInfo.numJoinedMembers) }
var joinRule: JoinRule { roomPreviewInfo.joinRule }
var membership: Membership? { roomPreviewInfo.membership }