mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Refactor the JoinRoom screen to take advantage of newer APIs and support more joinRule/membership combinations (i.e. invite required, restricted, banned) (#3685)
- expose the full RoomPreview and RoomMembershipDetails through their own proxies - implement standard mocks for all the different combinations - converge on a single room info provider - rebuild all the previews - prioritise the preview data over the room one.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// Copyright 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import MatrixRustSDK
|
||||
|
||||
final class RoomPreviewProxy: RoomPreviewProxyProtocol {
|
||||
private let roomPreview: RoomPreview
|
||||
|
||||
let info: RoomPreviewInfoProxy
|
||||
|
||||
init(roomPreview: RoomPreview) throws {
|
||||
self.roomPreview = roomPreview
|
||||
info = try .init(roomPreviewInfo: roomPreview.info())
|
||||
}
|
||||
|
||||
var ownMembershipDetails: RoomMembershipDetailsProxyProtocol? {
|
||||
get async {
|
||||
guard let details = await roomPreview.ownMembershipDetails() else {
|
||||
return nil
|
||||
}
|
||||
|
||||
var senderRoomMember: RoomMemberProxy?
|
||||
if let member = details.senderRoomMember {
|
||||
senderRoomMember = .init(member: member)
|
||||
}
|
||||
|
||||
return RoomMembershipDetailsProxy(ownRoomMember: RoomMemberProxy(member: details.ownRoomMember),
|
||||
senderRoomMember: senderRoomMember)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user