always present the space selection even for pre selected spaces
This commit is contained in:
@@ -137,20 +137,20 @@ class StartChatFlowCoordinator: FlowCoordinatorProtocol {
|
||||
self?.presentStartChatScreen()
|
||||
}
|
||||
stateMachine.addRoutes(event: .createRoom(isSpace: true), transitions: [.initial => .createRoom]) { [weak self] _ in
|
||||
self?.presentCreateRoomScreen(isSpace: true, spaceSelectionMode: nil, isRoot: true)
|
||||
self?.presentCreateRoomScreen(isSpace: true, spaceSelectionMode: .none, isRoot: true)
|
||||
}
|
||||
stateMachine.addRoutes(event: .createRoom(isSpace: false), transitions: [.initial => .createRoom]) { [weak self] context in
|
||||
guard context.fromState == .initial else { return } // Required check because the event is used in another route.
|
||||
guard let space = context.userInfo as? SpaceServiceRoom else {
|
||||
fatalError("This transition only supports creating a room in a pre-selected space.")
|
||||
}
|
||||
self?.presentCreateRoomScreen(isSpace: false, spaceSelectionMode: .preSelected(space), isRoot: true)
|
||||
self?.presentCreateRoomScreen(isSpace: false, spaceSelectionMode: .editableSpacesList(preSelectedSpace: space), isRoot: true)
|
||||
}
|
||||
|
||||
stateMachine.addRoutes(event: .createRoom(isSpace: false), transitions: [.startChat => .createRoom]) { [weak self] context in
|
||||
guard let self, context.fromState == .startChat else { return } // Required check because the event is used in another route.
|
||||
presentCreateRoomScreen(isSpace: false,
|
||||
spaceSelectionMode: flowParameters.appSettings.createSpaceEnabled ? .editableSpacesList : nil,
|
||||
spaceSelectionMode: flowParameters.appSettings.createSpaceEnabled ? .editableSpacesList(preSelectedSpace: nil) : .none,
|
||||
isRoot: false)
|
||||
}
|
||||
stateMachine.addRoutes(event: .dismissedCreateRoom, transitions: [.createRoom => .startChat]) { [weak self] _ in
|
||||
@@ -208,7 +208,7 @@ class StartChatFlowCoordinator: FlowCoordinatorProtocol {
|
||||
}
|
||||
|
||||
private func presentCreateRoomScreen(isSpace: Bool,
|
||||
spaceSelectionMode: CreateRoomScreenSpaceSelectionMode?,
|
||||
spaceSelectionMode: CreateRoomScreenSpaceSelectionMode,
|
||||
isRoot: Bool) {
|
||||
let createParameters = CreateRoomScreenCoordinatorParameters(isSpace: isSpace,
|
||||
spaceSelectionMode: spaceSelectionMode,
|
||||
|
||||
@@ -11,7 +11,7 @@ import SwiftUI
|
||||
|
||||
struct CreateRoomScreenCoordinatorParameters {
|
||||
let isSpace: Bool
|
||||
let spaceSelectionMode: CreateRoomScreenSpaceSelectionMode?
|
||||
let spaceSelectionMode: CreateRoomScreenSpaceSelectionMode
|
||||
let shouldShowCancelButton: Bool
|
||||
let userSession: UserSessionProtocol
|
||||
let userIndicatorController: UserIndicatorControllerProtocol
|
||||
|
||||
@@ -143,6 +143,6 @@ enum CreateRoomScreenAccessType {
|
||||
}
|
||||
|
||||
enum CreateRoomScreenSpaceSelectionMode {
|
||||
case editableSpacesList
|
||||
case preSelected(SpaceServiceRoom)
|
||||
case editableSpacesList(preSelectedSpace: SpaceServiceRoom?)
|
||||
case none
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class CreateRoomScreenViewModel: CreateRoomScreenViewModelType, CreateRoomScreen
|
||||
}
|
||||
|
||||
init(isSpace: Bool,
|
||||
spaceSelectionMode: CreateRoomScreenSpaceSelectionMode?,
|
||||
spaceSelectionMode: CreateRoomScreenSpaceSelectionMode,
|
||||
shouldShowCancelButton: Bool,
|
||||
userSession: UserSessionProtocol,
|
||||
analytics: AnalyticsService,
|
||||
@@ -40,18 +40,19 @@ class CreateRoomScreenViewModel: CreateRoomScreenViewModelType, CreateRoomScreen
|
||||
self.userIndicatorController = userIndicatorController
|
||||
|
||||
var selectedSpace: SpaceServiceRoom?
|
||||
var canSelectSpace = false
|
||||
let canSelectSpace: Bool
|
||||
var selectedAccessType = CreateRoomScreenAccessType.private
|
||||
switch spaceSelectionMode {
|
||||
case .editableSpacesList:
|
||||
case .editableSpacesList(let preSelectedSpace):
|
||||
canSelectSpace = true
|
||||
case .preSelected(let value):
|
||||
selectedSpace = value
|
||||
if value.joinRule != .public {
|
||||
selectedAccessType = .spaceMembers
|
||||
if let preSelectedSpace {
|
||||
selectedSpace = preSelectedSpace
|
||||
if preSelectedSpace.joinRule != .public {
|
||||
selectedAccessType = .spaceMembers
|
||||
}
|
||||
}
|
||||
case .none:
|
||||
break
|
||||
canSelectSpace = false
|
||||
}
|
||||
|
||||
let bindings = CreateRoomScreenViewStateBindings(roomTopic: "",
|
||||
|
||||
@@ -337,10 +337,10 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
||||
return viewModel
|
||||
}()
|
||||
|
||||
static let spaceViewModel = makeViewModel(isSpace: true, selectionMode: nil)
|
||||
static let spaceViewModel = makeViewModel(isSpace: true, selectionMode: .none)
|
||||
|
||||
static let spaceWithAvatarViewModel = {
|
||||
let viewModel = makeViewModel(isSpace: true, selectionMode: nil)
|
||||
let viewModel = makeViewModel(isSpace: true, selectionMode: .none)
|
||||
viewModel.updateAvatar(fileURL: Bundle.main.url(forResource: "preview_avatar_room", withExtension: "jpg") ?? .picturesDirectory)
|
||||
return viewModel
|
||||
}()
|
||||
@@ -371,9 +371,10 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
||||
return viewModel
|
||||
}()
|
||||
|
||||
static let selectedSpaceViewModel = makeViewModel(selectionMode: .preSelected(SpaceServiceRoom.mock(name: "Awesome Space",
|
||||
isSpace: true,
|
||||
joinRule: .invite)))
|
||||
static let selectedSpaceViewModel = makeViewModel(selectionMode: .editableSpacesList(preSelectedSpace: SpaceServiceRoom.mock(id: "awesome-space-id",
|
||||
name: "Awesome Space",
|
||||
isSpace: true,
|
||||
joinRule: .invite)))
|
||||
|
||||
static let selectedSpaceWithListViewModel = {
|
||||
let viewModel = makeViewModel()
|
||||
@@ -383,9 +384,10 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
static let selectedSpaceWithAskToJoinViewModel = {
|
||||
let viewModel = makeViewModel(isKnockingEnabled: true,
|
||||
selectionMode: .preSelected(SpaceServiceRoom.mock(name: "Awesome Space",
|
||||
isSpace: true,
|
||||
joinRule: .invite)))
|
||||
selectionMode: .editableSpacesList(preSelectedSpace: SpaceServiceRoom.mock(id: "awesome-space-id",
|
||||
name: "Awesome Space",
|
||||
isSpace: true,
|
||||
joinRule: .invite)))
|
||||
viewModel.context.selectedAccessType = .askToJoinWithSpaceMembers
|
||||
return viewModel
|
||||
}()
|
||||
@@ -453,7 +455,7 @@ struct CreateRoom_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
private static func makeViewModel(isKnockingEnabled: Bool = false,
|
||||
isSpace: Bool = false,
|
||||
selectionMode: CreateRoomScreenSpaceSelectionMode? = .editableSpacesList,
|
||||
selectionMode: CreateRoomScreenSpaceSelectionMode = .editableSpacesList(preSelectedSpace: nil),
|
||||
isAliasAvailable: Bool = true) -> CreateRoomScreenViewModel {
|
||||
AppSettings.resetAllSettings()
|
||||
let appSettings = AppSettings()
|
||||
|
||||
@@ -68,7 +68,7 @@ struct CreateRoomSpaceSelectionSheet_Previews: PreviewProvider, TestablePreview
|
||||
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
|
||||
|
||||
return CreateRoomScreenViewModel(isSpace: false,
|
||||
spaceSelectionMode: .editableSpacesList,
|
||||
spaceSelectionMode: .editableSpacesList(preSelectedSpace: nil),
|
||||
shouldShowCancelButton: false,
|
||||
userSession: userSession,
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
|
||||
Reference in New Issue
Block a user