added the create button in the empty state of the space screen and refactored some code

This commit is contained in:
Mauro Romito
2026-01-22 17:18:12 +01:00
committed by Mauro
parent d012380b01
commit ab1ed9e671
18 changed files with 96 additions and 70 deletions
@@ -225,7 +225,7 @@ class SpacesTabFlowCoordinator: FlowCoordinatorProtocol {
.store(in: &cancellables)
navigationSplitCoordinator.setSheetCoordinator(coordinator) { [weak self] in
self?.stateMachine.tryEvent(.dismissedCreateSpaceFlow)
self?.stateMachine.tryEvent(.dismissedCreateSpaceFlow, userInfo: spaceRoomListProxy)
}
flowCoordinator.start(animated: true)
@@ -141,14 +141,17 @@ class StartChatFlowCoordinator: FlowCoordinatorProtocol {
case .startChat:
presentStartChatScreen()
case .createSpace:
presentCreateRoomScreen(isSpace: true, isRoot: true)
presentCreateRoomScreen(isSpace: true, spaceSelectionMode: nil, isRoot: true)
case .createRoomInSpace(let space):
presentCreateRoomScreen(isSpace: false, selectedSpace: space, isRoot: true)
presentCreateRoomScreen(isSpace: false, spaceSelectionMode: .preSelected(space), isRoot: true)
}
}
stateMachine.addRoutes(event: .createRoom, transitions: [.startChat => .createRoom]) { [weak self] _ in
self?.presentCreateRoomScreen(isSpace: false, isRoot: false)
guard let self else { return }
presentCreateRoomScreen(isSpace: false,
spaceSelectionMode: flowParameters.appSettings.createSpaceEnabled ? .editableSpacesList : nil,
isRoot: false)
}
stateMachine.addRoutes(event: .dismissedCreateRoom, transitions: [.createRoom => .startChat]) { [weak self] _ in
self?.createRoomScreenCoordinator = nil
@@ -204,15 +207,9 @@ class StartChatFlowCoordinator: FlowCoordinatorProtocol {
navigationStackCoordinator.setRootCoordinator(coordinator)
}
private func presentCreateRoomScreen(isSpace: Bool, selectedSpace: SpaceServiceRoomProtocol? = nil, isRoot: Bool) {
let spaceSelectionMode: CreateRoomScreenSpaceSelectionMode? = if let selectedSpace {
.selected(selectedSpace)
} else if !isSpace, flowParameters.appSettings.createSpaceEnabled {
.list
} else {
nil
}
private func presentCreateRoomScreen(isSpace: Bool,
spaceSelectionMode: CreateRoomScreenSpaceSelectionMode?,
isRoot: Bool) {
let createParameters = CreateRoomScreenCoordinatorParameters(isSpace: isSpace,
spaceSelectionMode: spaceSelectionMode,
shouldShowCancelButton: isRoot,