Setup thread specific transitions and more reordering.
This commit is contained in:
committed by
Stefan Ceriu
parent
f9a7f44cec
commit
1353445ab0
@@ -265,7 +265,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
|
||||
// swiftlint:disable:next function_body_length
|
||||
private func setupStateMachine() {
|
||||
addRouteMapping(stateMachine: stateMachine)
|
||||
|
||||
@@ -286,46 +285,37 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
case (_, .dismissFlow, .complete):
|
||||
dismissFlow(animated: animated)
|
||||
|
||||
case (.room, .presentRoomMemberDetails, .roomMemberDetails(let userID, _)):
|
||||
presentRoomMemberDetails(userID: userID)
|
||||
|
||||
case (.room, .presentKnockRequestsListScreen, .knockRequestsList):
|
||||
presentKnockRequestsList()
|
||||
|
||||
case (.room, .presentReportContent, .reportContent(let itemID, let senderID, _)):
|
||||
presentReportContent(for: itemID, from: senderID)
|
||||
|
||||
case (.room, .presentMediaUploadPicker, .mediaUploadPicker(let source, _)):
|
||||
presentMediaUploadPickerWithSource(source)
|
||||
|
||||
case (.mediaUploadPicker, .presentMediaUploadPreview, .mediaUploadPreview(let fileURL, _)):
|
||||
presentMediaUploadPreviewScreen(for: fileURL, animated: animated)
|
||||
case (.room, .presentMediaUploadPreview, .mediaUploadPreview(let fileURL, _)):
|
||||
presentMediaUploadPreviewScreen(for: fileURL, animated: animated)
|
||||
|
||||
case (_, .presentEmojiPicker, .emojiPicker(let itemID, let selectedEmoji, _)):
|
||||
presentEmojiPicker(for: itemID, selectedEmoji: selectedEmoji)
|
||||
|
||||
case (.room, .presentMessageForwarding(let forwardingItem), .messageForwarding):
|
||||
presentMessageForwarding(with: forwardingItem)
|
||||
|
||||
case (.room, .presentMapNavigator(let mode), .mapNavigator):
|
||||
presentMapNavigator(interactionMode: mode)
|
||||
|
||||
case (.room, .presentPollForm(let mode), .pollForm):
|
||||
presentPollForm(mode: mode)
|
||||
|
||||
case (.room, .presentPinnedEventsTimeline, .pinnedEventsTimeline):
|
||||
startPinnedEventsTimelineFlow()
|
||||
|
||||
case (.room, .presentResolveSendFailure(let failure, let sendHandle), .resolveSendFailure):
|
||||
presentResolveSendFailure(failure: failure, sendHandle: sendHandle)
|
||||
|
||||
// Thread
|
||||
|
||||
case (.room, .presentThread(let itemID), .thread):
|
||||
Task { await self.presentThread(itemID: itemID) }
|
||||
|
||||
// Thread + Room
|
||||
|
||||
case (_, .presentReportContent, .reportContent(let itemID, let senderID, _)):
|
||||
presentReportContent(for: itemID, from: senderID)
|
||||
|
||||
case (_, .presentMediaUploadPicker, .mediaUploadPicker(let source, _)):
|
||||
presentMediaUploadPickerWithSource(source)
|
||||
|
||||
case (_, .presentEmojiPicker, .emojiPicker(let itemID, let selectedEmoji, _)):
|
||||
presentEmojiPicker(for: itemID, selectedEmoji: selectedEmoji)
|
||||
|
||||
case (_, .presentMessageForwarding(let forwardingItem), .messageForwarding):
|
||||
presentMessageForwarding(with: forwardingItem)
|
||||
|
||||
case (_, .presentMapNavigator(let mode), .mapNavigator):
|
||||
presentMapNavigator(interactionMode: mode)
|
||||
|
||||
case (_, .presentPollForm(let mode), .pollForm):
|
||||
presentPollForm(mode: mode)
|
||||
|
||||
case (_, .presentResolveSendFailure(let failure, let sendHandle), .resolveSendFailure):
|
||||
presentResolveSendFailure(failure: failure, sendHandle: sendHandle)
|
||||
|
||||
// Room Details
|
||||
|
||||
case (.initial, .presentRoomDetails, .roomDetails(let isRoot)),
|
||||
@@ -342,18 +332,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
case (.roomDetails, .presentRoomMembersList, .roomMembersList):
|
||||
presentRoomMembersList()
|
||||
|
||||
case (.roomDetails, .presentInviteUsersScreen, .inviteUsersScreen):
|
||||
presentInviteUsersScreen()
|
||||
|
||||
case (.notificationSettings, .presentGlobalNotificationSettingsScreen, .globalNotificationSettings):
|
||||
presentGlobalNotificationSettingsScreen()
|
||||
|
||||
case (.roomMembersList, .presentRoomMemberDetails, .roomMemberDetails(let userID, _)):
|
||||
presentRoomMemberDetails(userID: userID)
|
||||
|
||||
case (.roomMemberDetails, .presentUserProfile(let userID), .userProfile):
|
||||
replaceRoomMemberDetailsWithUserProfile(userID: userID)
|
||||
|
||||
case (.roomDetails, .presentPollsHistory, .pollsHistory):
|
||||
presentPollsHistory()
|
||||
|
||||
@@ -364,13 +342,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
presentRolesAndPermissionsScreen()
|
||||
case (.rolesAndPermissions, .dismissRolesAndPermissionsScreen, .roomDetails):
|
||||
rolesAndPermissionsFlowCoordinator = nil
|
||||
|
||||
case (.roomDetails, .presentRoomMemberDetails(let userID), .roomMemberDetails):
|
||||
presentRoomMemberDetails(userID: userID)
|
||||
|
||||
case (.roomDetails, .presentKnockRequestsListScreen, .knockRequestsList):
|
||||
presentKnockRequestsList()
|
||||
|
||||
|
||||
case (.roomDetails, .presentMediaEventsTimeline, .mediaEventsTimeline):
|
||||
Task { await self.startMediaEventsTimelineFlow() }
|
||||
|
||||
@@ -380,18 +352,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
case (.roomDetails, .presentReportRoomScreen, .reportRoom):
|
||||
presentReportRoom()
|
||||
|
||||
// Other
|
||||
|
||||
case (_, .startChildFlow(let roomID, let via, let entryPoint), .presentingChild):
|
||||
Task { await self.startChildFlow(for: roomID, via: via, entryPoint: entryPoint) }
|
||||
case (.presentingChild, .dismissChildFlow, _):
|
||||
childRoomFlowCoordinator = nil
|
||||
|
||||
case (.roomMembersList, .presentInviteUsersScreen, .inviteUsersScreen):
|
||||
presentInviteUsersScreen()
|
||||
|
||||
case (.pollsHistory, .presentPollForm(let mode), .pollsHistoryForm):
|
||||
presentPollForm(mode: mode)
|
||||
// Join room
|
||||
|
||||
case (_, .presentJoinRoomScreen(let via), .joinRoomScreen):
|
||||
presentJoinRoomScreen(via: via, animated: true)
|
||||
@@ -401,6 +362,34 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
||||
case (.joinRoomScreen, .presentDeclineAndBlockScreen(let userID), .declineAndBlockScreen):
|
||||
presentDeclineAndBlockScreen(userID: userID)
|
||||
|
||||
// Other
|
||||
|
||||
case (_, .startChildFlow(let roomID, let via, let entryPoint), .presentingChild):
|
||||
Task { await self.startChildFlow(for: roomID, via: via, entryPoint: entryPoint) }
|
||||
case (.presentingChild, .dismissChildFlow, _):
|
||||
childRoomFlowCoordinator = nil
|
||||
|
||||
case (_, .presentRoomMemberDetails, .roomMemberDetails(let userID, _)):
|
||||
presentRoomMemberDetails(userID: userID)
|
||||
|
||||
case (_, .presentKnockRequestsListScreen, .knockRequestsList):
|
||||
presentKnockRequestsList()
|
||||
|
||||
case (.notificationSettings, .presentGlobalNotificationSettingsScreen, .globalNotificationSettings):
|
||||
presentGlobalNotificationSettingsScreen()
|
||||
|
||||
case (.roomMemberDetails, .presentUserProfile(let userID), .userProfile):
|
||||
replaceRoomMemberDetailsWithUserProfile(userID: userID)
|
||||
|
||||
case (.pollsHistory, .presentPollForm(let mode), .pollsHistoryForm):
|
||||
presentPollForm(mode: mode)
|
||||
|
||||
case (_, .presentMediaUploadPreview, .mediaUploadPreview(let fileURL, _)):
|
||||
presentMediaUploadPreviewScreen(for: fileURL, animated: animated)
|
||||
|
||||
case (_, .presentInviteUsersScreen, .inviteUsersScreen):
|
||||
presentInviteUsersScreen()
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
@@ -187,8 +187,6 @@ extension RoomFlowCoordinator {
|
||||
case (.room, .presentMediaUploadPicker(let source)):
|
||||
return .mediaUploadPicker(source: source, previousState: fromState)
|
||||
|
||||
case (.mediaUploadPicker, .presentMediaUploadPreview(let fileURL)):
|
||||
return .mediaUploadPreview(fileURL: fileURL, previousState: fromState)
|
||||
case (.room, .presentMediaUploadPreview(let fileURL)):
|
||||
return .mediaUploadPreview(fileURL: fileURL, previousState: fromState)
|
||||
|
||||
@@ -204,6 +202,9 @@ extension RoomFlowCoordinator {
|
||||
case (.room, .presentPollForm):
|
||||
return .pollForm(previousState: fromState)
|
||||
|
||||
case (.room, .presentResolveSendFailure):
|
||||
return .resolveSendFailure(previousState: fromState)
|
||||
|
||||
case (.room, .presentPinnedEventsTimeline):
|
||||
return .pinnedEventsTimeline(previousState: fromState)
|
||||
case (.roomDetails, .presentPinnedEventsTimeline):
|
||||
@@ -211,9 +212,6 @@ extension RoomFlowCoordinator {
|
||||
case (.pinnedEventsTimeline(let previousState), .dismissPinnedEventsTimeline):
|
||||
return previousState
|
||||
|
||||
case (.room, .presentResolveSendFailure):
|
||||
return .resolveSendFailure(previousState: fromState)
|
||||
|
||||
// Thread
|
||||
case (.room, .presentThread(let itemID)):
|
||||
return .thread(itemID: itemID)
|
||||
@@ -329,12 +327,7 @@ extension RoomFlowCoordinator {
|
||||
return .joinRoomScreen
|
||||
|
||||
// Other
|
||||
|
||||
case (_, .presentInviteUsersScreen):
|
||||
return .inviteUsersScreen(previousState: fromState)
|
||||
case (.inviteUsersScreen(let previousState), .dismissInviteUsersScreen):
|
||||
return previousState
|
||||
|
||||
|
||||
case (_, .startChildFlow(let roomID, _, _)):
|
||||
return .presentingChild(childRoomID: roomID, previousState: fromState)
|
||||
case (.presentingChild(_, let previousState), .dismissChildFlow):
|
||||
@@ -367,6 +360,14 @@ extension RoomFlowCoordinator {
|
||||
return .pollsHistoryForm
|
||||
case (.pollsHistoryForm, .dismissPollForm):
|
||||
return .pollsHistory
|
||||
|
||||
case (.mediaUploadPicker, .presentMediaUploadPreview(let fileURL)):
|
||||
return .mediaUploadPreview(fileURL: fileURL, previousState: fromState)
|
||||
|
||||
case (_, .presentInviteUsersScreen):
|
||||
return .inviteUsersScreen(previousState: fromState)
|
||||
case (.inviteUsersScreen(let previousState), .dismissInviteUsersScreen):
|
||||
return previousState
|
||||
|
||||
default:
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user