Apply the logic from the previous commit and the JoinRoomProxy to the KnockedRoomProxy

This commit is contained in:
Stefan Ceriu
2025-05-26 09:16:23 +03:00
committed by Stefan Ceriu
parent ae42540ec0
commit 54a4656469
2 changed files with 18 additions and 21 deletions
@@ -915,12 +915,16 @@ class ClientProxy: ClientProxyProtocol {
return try await .invited(InvitedRoomProxy(room: room)) return try await .invited(InvitedRoomProxy(room: room))
case .knocked: case .knocked:
if appSettings.knockingEnabled { guard appSettings.knockingEnabled else {
return try await .knocked(KnockedRoomProxy(roomListItem: roomListItem, return nil
roomPreview: roomListItem.previewRoom(via: []),
ownUserID: userID))
} }
return nil
guard let room = try client.getRoom(roomId: roomID) else {
MXLog.error("Could not find room with ID: \(roomID)")
return nil
}
return try await .knocked(KnockedRoomProxy(room: room))
case .joined: case .joined:
guard let room = try client.getRoom(roomId: roomID) else { guard let room = try client.getRoom(roomId: roomID) else {
MXLog.error("Could not find room with ID: \(roomID)") MXLog.error("Could not find room with ID: \(roomID)")
@@ -9,31 +9,24 @@ import Foundation
import MatrixRustSDK import MatrixRustSDK
class KnockedRoomProxy: KnockedRoomProxyProtocol { class KnockedRoomProxy: KnockedRoomProxyProtocol {
private let roomListItem: RoomListItemProtocol private let room: Room
private let roomPreview: RoomPreviewProtocol
// A room identifier is constant and lazy stops it from being fetched lazy var id: String = room.id()
// multiple times over FFI lazy var ownUserID: String = room.ownUserId()
lazy var id = info.id
let ownUserID: String
let info: BaseRoomInfoProxyProtocol let info: BaseRoomInfoProxyProtocol
init(roomListItem: RoomListItemProtocol, init(room: Room) async throws {
roomPreview: RoomPreviewProtocol, self.room = room
ownUserID: String) throws {
self.roomListItem = roomListItem info = try await RoomInfoProxy(roomInfo: room.roomInfo())
self.roomPreview = roomPreview
self.ownUserID = ownUserID
info = try RoomPreviewInfoProxy(roomPreviewInfo: roomPreview.info())
} }
func cancelKnock() async -> Result<Void, RoomProxyError> { func cancelKnock() async -> Result<Void, RoomProxyError> {
do { do {
return try await .success(roomPreview.leave()) return try await .success(room.leave())
} catch { } catch {
MXLog.error("Failed cancelling the knock with error: \(error)") MXLog.error("Failed rejecting invitiation with error: \(error)")
return .failure(.sdkError(error)) return .failure(.sdkError(error))
} }
} }