Add support for space rooms on the JoinRoomScreen. (#4582)

* Add support for space rooms to JoinRoomScreenModel.

* Make a single wrapper type for JoinRoomScreen previews to simplify instantiation.

* Add previews for JoinRoomScreen for spaces.
This commit is contained in:
Doug
2025-10-07 10:51:58 +01:00
committed by GitHub
parent 1a5ff8b012
commit 8cd5c9862e
102 changed files with 671 additions and 321 deletions
@@ -9,13 +9,26 @@ import Combine
import SwiftUI
struct JoinRoomScreenCoordinatorParameters {
let roomID: String
let via: [String]
let source: JoinRoomScreenSource
let userSession: UserSessionProtocol
let userIndicatorController: UserIndicatorControllerProtocol
let appSettings: AppSettings
}
enum JoinRoomScreenSource {
case generic(roomID: String, via: [String])
case space(SpaceRoomProxyProtocol)
func roomIDAndVia() -> (roomID: String, via: [String]) {
switch self {
case let .generic(roomID: roomID, via: via):
return (roomID: roomID, via: via)
case let .space(spaceRoomProxy):
return (roomID: spaceRoomProxy.id, via: spaceRoomProxy.via)
}
}
}
enum JoinRoomScreenJoinDetails {
case roomID(String)
case space(SpaceRoomListProxyProtocol)
@@ -38,8 +51,7 @@ final class JoinRoomScreenCoordinator: CoordinatorProtocol {
}
init(parameters: JoinRoomScreenCoordinatorParameters) {
viewModel = JoinRoomScreenViewModel(roomID: parameters.roomID,
via: parameters.via,
viewModel = JoinRoomScreenViewModel(source: parameters.source,
appSettings: parameters.appSettings,
userSession: parameters.userSession,
userIndicatorController: parameters.userIndicatorController)