Skip to content

Commit

Permalink
some iOS bugfixes (#3732)
Browse files Browse the repository at this point in the history
Co-authored-by: Element CI <[email protected]>
  • Loading branch information
Velin92 and Element CI authored Feb 4, 2025
1 parent 10d3925 commit 5d785b3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ struct JoinRoomScreenRoomDetails {
let topic: String?
let canonicalAlias: String?
let avatar: RoomAvatar
let memberCount: UInt
let memberCount: Int
let inviter: RoomInviterDetails?
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down Expand Up @@ -101,6 +102,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
}

private func updateRoomDetails() async {
membershipStateChangeCancellable = nil
var roomInfo: BaseRoomInfoProxyProtocol?
var inviter: RoomInviterDetails?

Expand All @@ -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
}
Expand All @@ -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()
Expand Down
2 changes: 2 additions & 0 deletions ElementX/Sources/Services/Room/RoomInfoProxy.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
}
Expand Down Expand Up @@ -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 }
Expand Down

0 comments on commit 5d785b3

Please sign in to comment.