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 topic: String?
let canonicalAlias: String? let canonicalAlias: String?
let avatar: RoomAvatar let avatar: RoomAvatar
let memberCount: UInt let memberCount: Int
let inviter: RoomInviterDetails? let inviter: RoomInviterDetails?
} }
@@ -19,6 +19,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
private var roomPreview: RoomPreviewProxyProtocol? private var roomPreview: RoomPreviewProxyProtocol?
private var room: RoomProxyType? private var room: RoomProxyType?
private var membershipStateChangeCancellable: AnyCancellable?
private let actionsSubject: PassthroughSubject<JoinRoomScreenViewModelAction, Never> = .init() private let actionsSubject: PassthroughSubject<JoinRoomScreenViewModelAction, Never> = .init()
var actionsPublisher: AnyPublisher<JoinRoomScreenViewModelAction, Never> { var actionsPublisher: AnyPublisher<JoinRoomScreenViewModelAction, Never> {
@@ -101,6 +102,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
} }
private func updateRoomDetails() async { private func updateRoomDetails() async {
membershipStateChangeCancellable = nil
var roomInfo: BaseRoomInfoProxyProtocol? var roomInfo: BaseRoomInfoProxyProtocol?
var inviter: RoomInviterDetails? var inviter: RoomInviterDetails?
@@ -112,6 +114,19 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
roomInfo = invitedRoomProxy.info roomInfo = invitedRoomProxy.info
case .knocked(let knockedRoomProxy): case .knocked(let knockedRoomProxy):
roomInfo = knockedRoomProxy.info 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: default:
break break
} }
@@ -121,7 +136,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
topic: info?.topic, topic: info?.topic,
canonicalAlias: info?.canonicalAlias, canonicalAlias: info?.canonicalAlias,
avatar: info?.avatar ?? .room(id: roomID, name: info?.displayName ?? "", avatarURL: nil), avatar: info?.avatar ?? .room(id: roomID, name: info?.displayName ?? "", avatarURL: nil),
memberCount: UInt(info?.activeMembersCount ?? 0), memberCount: info?.joinedMembersCount ?? 0,
inviter: inviter) inviter: inviter)
await updateMode() await updateMode()
@@ -16,6 +16,7 @@ protocol BaseRoomInfoProxyProtocol {
var canonicalAlias: String? { get } var canonicalAlias: String? { get }
var avatarURL: URL? { get } var avatarURL: URL? { get }
var activeMembersCount: Int { get } var activeMembersCount: Int { get }
var joinedMembersCount: Int { get }
var isDirect: Bool { get } var isDirect: Bool { get }
var isSpace: Bool { get } var isSpace: Bool { get }
} }
@@ -112,6 +113,7 @@ struct RoomPreviewInfoProxy: BaseRoomInfoProxyProtocol {
var isDirect: Bool { roomPreviewInfo.isDirect ?? false } var isDirect: Bool { roomPreviewInfo.isDirect ?? false }
var isSpace: Bool { roomPreviewInfo.roomType == .space } var isSpace: Bool { roomPreviewInfo.roomType == .space }
var activeMembersCount: Int { Int(roomPreviewInfo.numActiveMembers ?? roomPreviewInfo.numJoinedMembers) } var activeMembersCount: Int { Int(roomPreviewInfo.numActiveMembers ?? roomPreviewInfo.numJoinedMembers) }
var joinedMembersCount: Int { Int(roomPreviewInfo.numJoinedMembers) }
var joinRule: JoinRule { roomPreviewInfo.joinRule } var joinRule: JoinRule { roomPreviewInfo.joinRule }
var membership: Membership? { roomPreviewInfo.membership } var membership: Membership? { roomPreviewInfo.membership }