Public Search View (#2585)

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
This commit is contained in:
Mauro
2024-03-21 15:34:35 +01:00
committed by GitHub
parent a62c96f1c5
commit 562e5e739d
44 changed files with 954 additions and 35 deletions
@@ -310,6 +310,11 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
case (.logoutConfirmationScreen, .dismissedLogoutConfirmationScreen, .roomList):
break
case (.roomList, .showRoomDirectorySearchScreen, .roomDirectorySearchScreen):
presentRoomDirectorySearch()
case (.roomDirectorySearchScreen, .dismissedRoomDirectorySearchScreen, .roomList):
dismissRoomDirectorySearch()
default:
fatalError("Unknown transition: \(context)")
}
@@ -370,6 +375,8 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
stateMachine.processEvent(.showInvitesScreen)
case .presentGlobalSearch:
presentGlobalSearch()
case .presentRoomDirectorySearch:
stateMachine.processEvent(.showRoomDirectorySearchScreen)
}
}
.store(in: &cancellables)
@@ -566,4 +573,26 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
globalSearchScreenCoordinator = nil
}
// MARK: Room Directory Search
private func presentRoomDirectorySearch() {
let coordinator = RoomDirectorySearchScreenCoordinator(parameters: .init(roomDirectorySearchProxy: userSession.clientProxy.roomDirectorySearchProxy(),
imageProvider: userSession.mediaProvider,
userIndicatorController: ServiceLocator.shared.userIndicatorController))
coordinator.actionsPublisher.sink { [weak self] action in
switch action {
case .dismiss:
self?.stateMachine.processEvent(.dismissedRoomDirectorySearchScreen(joinedRoomID: nil))
}
}
.store(in: &cancellables)
navigationSplitCoordinator.setFullScreenCoverCoordinator(coordinator)
}
private func dismissRoomDirectorySearch() {
navigationSplitCoordinator.setFullScreenCoverCoordinator(nil)
}
}
@@ -40,6 +40,9 @@ class UserSessionFlowCoordinatorStateMachine {
// Showing the logout flows
case logoutConfirmationScreen(selectedRoomID: String?)
// Showing Room Directory Search screen
case roomDirectorySearchScreen(selectedRoomID: String?)
}
struct EventUserInfo {
@@ -81,6 +84,9 @@ class UserSessionFlowCoordinatorStateMachine {
case showLogoutConfirmationScreen
/// Logout has been cancelled
case dismissedLogoutConfirmationScreen
case showRoomDirectorySearchScreen
case dismissedRoomDirectorySearchScreen(joinedRoomID: String?)
}
private let stateMachine: StateMachine<State, Event>
@@ -136,6 +142,14 @@ class UserSessionFlowCoordinatorStateMachine {
case (.logoutConfirmationScreen(let selectedRoomID), .dismissedLogoutConfirmationScreen):
return .roomList(selectedRoomID: selectedRoomID)
case (.roomList(let selectedRoomID), .showRoomDirectorySearchScreen):
return .roomDirectorySearchScreen(selectedRoomID: selectedRoomID)
case (.roomDirectorySearchScreen(let selectedRoomID), .dismissedRoomDirectorySearchScreen(let joinedRoomID)):
if let joinedRoomID {
return .roomList(selectedRoomID: joinedRoomID)
}
return .roomList(selectedRoomID: selectedRoomID)
default:
return nil
}