mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-06 04:18:31 +00:00
Knock Requests List Screen (#3533)
* created the basic navigation and files * updated the logic so that the buttons that do not have permissions won't show * added the empty state * progress in making the list UI * update tests * UI improvements * fixed an issue with media provider * update button style * fixed a navigation bug * pr suggestions * pr suggestions
This commit is contained in:
@@ -413,6 +413,11 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
return .presentingChild(childRoomID: roomID, previousState: fromState)
|
||||
case (.presentingChild(_, let previousState), .dismissChildFlow):
|
||||
return previousState
|
||||
|
||||
case (.roomDetails, .presentKnockRequestsListScreen):
|
||||
return .knockRequestsList
|
||||
case (.knockRequestsList, .dismissKnockRequestsListScreen):
|
||||
return .roomDetails(isRoot: false)
|
||||
|
||||
default:
|
||||
return nil
|
||||
@@ -565,6 +570,11 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
presentResolveSendFailure(failure: failure, sendHandle: sendHandle)
|
||||
case (.resolveSendFailure, .dismissResolveSendFailure, .room):
|
||||
break
|
||||
|
||||
case (.roomDetails, .presentKnockRequestsListScreen, .knockRequestsList):
|
||||
presentKnockRequestsList()
|
||||
case (.knockRequestsList, .dismissKnockRequestsListScreen, .roomDetails):
|
||||
break
|
||||
|
||||
// Child flow
|
||||
case (_, .startChildFlow(let roomID, let via, let entryPoint), .presentingChild):
|
||||
@@ -837,6 +847,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
actionsSubject.send(.presentCallScreen(roomProxy: roomProxy))
|
||||
case .presentPinnedEventsTimeline:
|
||||
stateMachine.tryEvent(.presentPinnedEventsTimeline)
|
||||
case .presentKnockingRequestsListScreen:
|
||||
stateMachine.tryEvent(.presentKnockRequestsListScreen)
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
@@ -883,6 +895,20 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
}
|
||||
}
|
||||
|
||||
private func presentKnockRequestsList() {
|
||||
let parameters = KnockRequestsListScreenCoordinatorParameters(roomProxy: roomProxy, mediaProvider: userSession.mediaProvider)
|
||||
let coordinator = KnockRequestsListScreenCoordinator(parameters: parameters)
|
||||
|
||||
coordinator.actionsPublisher
|
||||
.sink { [weak self] _ in
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
navigationStackCoordinator.push(coordinator) { [weak self] in
|
||||
self?.stateMachine.tryEvent(.dismissKnockRequestsListScreen)
|
||||
}
|
||||
}
|
||||
|
||||
private func presentRoomDetailsEditScreen() {
|
||||
let stackCoordinator = NavigationStackCoordinator()
|
||||
|
||||
@@ -1546,6 +1572,7 @@ private extension RoomFlowCoordinator {
|
||||
case rolesAndPermissions
|
||||
case pinnedEventsTimeline(previousState: PinnedEventsTimelineSource)
|
||||
case resolveSendFailure
|
||||
case knockRequestsList
|
||||
|
||||
/// A child flow is in progress.
|
||||
case presentingChild(childRoomID: String, previousState: State)
|
||||
@@ -1624,6 +1651,9 @@ private extension RoomFlowCoordinator {
|
||||
// Child room flow events
|
||||
case startChildFlow(roomID: String, via: [String], entryPoint: RoomFlowCoordinatorEntryPoint)
|
||||
case dismissChildFlow
|
||||
|
||||
case presentKnockRequestsListScreen
|
||||
case dismissKnockRequestsListScreen
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user