mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Add support for joining rooms from a space. (#4501)
* Add support for joining rooms from a space.
Doesn't yet handle the Join button 🤔
* Handle the join button for both rooms and spaces.
Also refactor more instances of spaceRoom to spaceRoomProxy.
This commit is contained in:
@@ -15,6 +15,7 @@ struct ClientProxyMockConfiguration {
|
||||
var deviceID: String?
|
||||
var roomSummaryProvider: RoomSummaryProviderProtocol = RoomSummaryProviderMock(.init())
|
||||
var joinedSpaceRooms: [SpaceRoomProxyProtocol] = []
|
||||
var roomPreviews: [RoomPreviewProxyProtocol]?
|
||||
var roomDirectorySearchProxy: RoomDirectorySearchProxyProtocol?
|
||||
|
||||
var recoveryState: SecureBackupRecoveryState = .enabled
|
||||
@@ -65,6 +66,7 @@ extension ClientProxyMock {
|
||||
directRoomForUserIDReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
createDirectRoomWithExpectedRoomNameReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
createRoomNameTopicIsRoomPrivateIsKnockingOnlyUserIDsAvatarURLAliasLocalPartReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
canJoinRoomWithReturnValue = true
|
||||
uploadMediaReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
loadUserDisplayNameReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
setUserDisplayNameReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||
@@ -95,13 +97,23 @@ extension ClientProxyMock {
|
||||
roomForIdentifierClosure = { [weak self] identifier in
|
||||
if let room = self?.roomSummaryProvider.roomListPublisher.value.first(where: { $0.id == identifier }) {
|
||||
await .joined(JoinedRoomProxyMock(.init(id: room.id, name: room.name)))
|
||||
} else if let spaceRoom = configuration.joinedSpaceRooms.first(where: { $0.id == identifier }) {
|
||||
await .joined(JoinedRoomProxyMock(.init(id: spaceRoom.id, name: spaceRoom.name)))
|
||||
} else if let spaceRoomProxy = configuration.joinedSpaceRooms.first(where: { $0.id == identifier }) {
|
||||
await .joined(JoinedRoomProxyMock(.init(id: spaceRoomProxy.id, name: spaceRoomProxy.name)))
|
||||
} else {
|
||||
nil
|
||||
}
|
||||
}
|
||||
|
||||
if let roomPreviews = configuration.roomPreviews {
|
||||
roomPreviewForIdentifierViaClosure = { roomID, _ in
|
||||
if let preview = roomPreviews.first(where: { $0.info.id == roomID }) {
|
||||
.success(preview)
|
||||
} else {
|
||||
.failure(.roomPreviewIsPrivate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
userIdentityForReturnValue = .success(UserIdentityProxyMock(configuration: .init()))
|
||||
|
||||
underlyingIsReportRoomSupported = true
|
||||
|
||||
Reference in New Issue
Block a user