mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Rearrange room flow coordinator state machine transitions
This commit is contained in:
committed by
Stefan Ceriu
parent
99c3cd7872
commit
4cb8ae3ef6
@@ -363,9 +363,9 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
case (.mediaUploadPreview, .dismissMediaUploadPreview, .room):
|
case (.mediaUploadPreview, .dismissMediaUploadPreview, .room):
|
||||||
break
|
break
|
||||||
|
|
||||||
case (.room, .presentEmojiPicker, .emojiPicker(let itemID, let selectedEmoji)):
|
case (_, .presentEmojiPicker, .emojiPicker(let itemID, let selectedEmoji)):
|
||||||
presentEmojiPicker(for: itemID, selectedEmoji: selectedEmoji)
|
presentEmojiPicker(for: itemID, selectedEmoji: selectedEmoji)
|
||||||
case (.emojiPicker, .dismissEmojiPicker, .room):
|
case (.emojiPicker, .dismissEmojiPicker, _):
|
||||||
break
|
break
|
||||||
|
|
||||||
case (.room, .presentMessageForwarding(let forwardingItem), .messageForwarding):
|
case (.room, .presentMessageForwarding(let forwardingItem), .messageForwarding):
|
||||||
|
|||||||
@@ -175,63 +175,12 @@ extension RoomFlowCoordinator {
|
|||||||
func addRouteMapping(stateMachine: StateMachine<State, Event>) {
|
func addRouteMapping(stateMachine: StateMachine<State, Event>) {
|
||||||
stateMachine.addRouteMapping { event, fromState, _ in
|
stateMachine.addRouteMapping { event, fromState, _ in
|
||||||
switch (fromState, event) {
|
switch (fromState, event) {
|
||||||
case (_, .presentJoinRoomScreen):
|
// Room
|
||||||
return .joinRoomScreen
|
|
||||||
case (_, .dismissJoinRoomScreen):
|
|
||||||
return .complete
|
|
||||||
|
|
||||||
case (_, .presentRoom):
|
case (_, .presentRoom):
|
||||||
return .room
|
return .room
|
||||||
case (_, .dismissFlow):
|
case (_, .dismissFlow):
|
||||||
return .complete
|
return .complete
|
||||||
|
|
||||||
case (_, .presentThread(let itemID)):
|
|
||||||
return .thread(itemID: itemID)
|
|
||||||
case (_, .dismissThread):
|
|
||||||
return .room
|
|
||||||
|
|
||||||
case (.initial, .presentRoomDetails):
|
|
||||||
return .roomDetails(isRoot: true)
|
|
||||||
case (.room, .presentRoomDetails):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
case (.roomDetails, .dismissRoomDetails):
|
|
||||||
return .room
|
|
||||||
|
|
||||||
case (.roomDetails, .presentRoomDetailsEditScreen):
|
|
||||||
return .roomDetailsEditScreen
|
|
||||||
case (.roomDetailsEditScreen, .dismissRoomDetailsEditScreen):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
|
|
||||||
case (.roomDetails, .presentNotificationSettingsScreen):
|
|
||||||
return .notificationSettings
|
|
||||||
case (.notificationSettings, .dismissNotificationSettingsScreen):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
|
|
||||||
case (.notificationSettings, .presentGlobalNotificationSettingsScreen):
|
|
||||||
return .globalNotificationSettings
|
|
||||||
case (.globalNotificationSettings, .dismissGlobalNotificationSettingsScreen):
|
|
||||||
return .notificationSettings
|
|
||||||
|
|
||||||
case (.roomDetails, .presentRoomMembersList):
|
|
||||||
return .roomMembersList
|
|
||||||
case (.roomMembersList, .dismissRoomMembersList):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
|
|
||||||
case (_, .presentRoomMemberDetails(userID: let userID)):
|
|
||||||
return .roomMemberDetails(userID: userID, previousState: fromState)
|
|
||||||
case (.roomMemberDetails(_, let previousState), .dismissRoomMemberDetails):
|
|
||||||
return previousState
|
|
||||||
|
|
||||||
case (.roomMemberDetails(_, let previousState), .presentUserProfile(let userID)):
|
|
||||||
return .userProfile(userID: userID, previousState: previousState)
|
|
||||||
case (.userProfile(_, let previousState), .dismissUserProfile):
|
|
||||||
return previousState
|
|
||||||
|
|
||||||
case (_, .presentInviteUsersScreen):
|
|
||||||
return .inviteUsersScreen(previousState: fromState)
|
|
||||||
case (.inviteUsersScreen(let previousState), .dismissInviteUsersScreen):
|
|
||||||
return previousState
|
|
||||||
|
|
||||||
case (.room, .presentReportContent(let itemID, let senderID)):
|
case (.room, .presentReportContent(let itemID, let senderID)):
|
||||||
return .reportContent(itemID: itemID, senderID: senderID)
|
return .reportContent(itemID: itemID, senderID: senderID)
|
||||||
case (.reportContent, .dismissReportContent):
|
case (.reportContent, .dismissReportContent):
|
||||||
@@ -276,35 +225,50 @@ extension RoomFlowCoordinator {
|
|||||||
case (.pinnedEventsTimeline(let previousState), .dismissPinnedEventsTimeline):
|
case (.pinnedEventsTimeline(let previousState), .dismissPinnedEventsTimeline):
|
||||||
return previousState
|
return previousState
|
||||||
|
|
||||||
case (.roomDetails, .presentPollsHistory):
|
|
||||||
return .pollsHistory
|
|
||||||
case (.pollsHistory, .dismissPollsHistory):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
|
|
||||||
case (.pollsHistory, .presentPollForm):
|
|
||||||
return .pollsHistoryForm
|
|
||||||
case (.pollsHistoryForm, .dismissPollForm):
|
|
||||||
return .pollsHistory
|
|
||||||
|
|
||||||
case (.roomDetails, .presentRolesAndPermissionsScreen):
|
|
||||||
return .rolesAndPermissions
|
|
||||||
case (.rolesAndPermissions, .dismissRolesAndPermissionsScreen):
|
|
||||||
return .roomDetails(isRoot: false)
|
|
||||||
|
|
||||||
case (.room, .presentResolveSendFailure):
|
case (.room, .presentResolveSendFailure):
|
||||||
return .resolveSendFailure
|
return .resolveSendFailure
|
||||||
case (.resolveSendFailure, .dismissResolveSendFailure):
|
case (.resolveSendFailure, .dismissResolveSendFailure):
|
||||||
return .room
|
return .room
|
||||||
|
|
||||||
case (_, .startChildFlow(let roomID, _, _)):
|
|
||||||
return .presentingChild(childRoomID: roomID, previousState: fromState)
|
|
||||||
case (.presentingChild(_, let previousState), .dismissChildFlow):
|
|
||||||
return previousState
|
|
||||||
|
|
||||||
case (_, .presentKnockRequestsListScreen):
|
// Thread
|
||||||
return .knockRequestsList(previousState: fromState)
|
case (_, .presentThread(let itemID)):
|
||||||
case (.knockRequestsList(let previousState), .dismissKnockRequestsListScreen):
|
return .thread(itemID: itemID)
|
||||||
return previousState
|
case (_, .dismissThread):
|
||||||
|
return .room
|
||||||
|
|
||||||
|
// Room Details
|
||||||
|
|
||||||
|
case (.initial, .presentRoomDetails):
|
||||||
|
return .roomDetails(isRoot: true)
|
||||||
|
case (.room, .presentRoomDetails):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
case (.roomDetails, .dismissRoomDetails):
|
||||||
|
return .room
|
||||||
|
|
||||||
|
case (.roomDetails, .presentRoomDetailsEditScreen):
|
||||||
|
return .roomDetailsEditScreen
|
||||||
|
case (.roomDetailsEditScreen, .dismissRoomDetailsEditScreen):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
|
||||||
|
case (.roomDetails, .presentRoomMembersList):
|
||||||
|
return .roomMembersList
|
||||||
|
case (.roomMembersList, .dismissRoomMembersList):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
|
||||||
|
case (.roomDetails, .presentNotificationSettingsScreen):
|
||||||
|
return .notificationSettings
|
||||||
|
case (.notificationSettings, .dismissNotificationSettingsScreen):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
|
||||||
|
case (.roomDetails, .presentPollsHistory):
|
||||||
|
return .pollsHistory
|
||||||
|
case (.pollsHistory, .dismissPollsHistory):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
|
||||||
|
case (.roomDetails, .presentRolesAndPermissionsScreen):
|
||||||
|
return .rolesAndPermissions
|
||||||
|
case (.rolesAndPermissions, .dismissRolesAndPermissionsScreen):
|
||||||
|
return .roomDetails(isRoot: false)
|
||||||
|
|
||||||
case (.roomDetails, .presentMediaEventsTimeline):
|
case (.roomDetails, .presentMediaEventsTimeline):
|
||||||
return .mediaEventsTimeline(previousState: fromState)
|
return .mediaEventsTimeline(previousState: fromState)
|
||||||
@@ -321,10 +285,54 @@ extension RoomFlowCoordinator {
|
|||||||
case (.reportRoom(let previousState), .dismissReportRoomScreen):
|
case (.reportRoom(let previousState), .dismissReportRoomScreen):
|
||||||
return previousState
|
return previousState
|
||||||
|
|
||||||
|
// Join room
|
||||||
|
|
||||||
|
case (_, .presentJoinRoomScreen):
|
||||||
|
return .joinRoomScreen
|
||||||
|
case (_, .dismissJoinRoomScreen):
|
||||||
|
return .complete
|
||||||
|
|
||||||
case (.joinRoomScreen, .presentDeclineAndBlockScreen):
|
case (.joinRoomScreen, .presentDeclineAndBlockScreen):
|
||||||
return .declineAndBlockScreen
|
return .declineAndBlockScreen
|
||||||
case (.declineAndBlockScreen, .dismissDeclineAndBlockScreen):
|
case (.declineAndBlockScreen, .dismissDeclineAndBlockScreen):
|
||||||
return .joinRoomScreen
|
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):
|
||||||
|
return previousState
|
||||||
|
|
||||||
|
case (_, .presentRoomMemberDetails(userID: let userID)):
|
||||||
|
return .roomMemberDetails(userID: userID, previousState: fromState)
|
||||||
|
case (.roomMemberDetails(_, let previousState), .dismissRoomMemberDetails):
|
||||||
|
return previousState
|
||||||
|
|
||||||
|
case (_, .presentKnockRequestsListScreen):
|
||||||
|
return .knockRequestsList(previousState: fromState)
|
||||||
|
case (.knockRequestsList(let previousState), .dismissKnockRequestsListScreen):
|
||||||
|
return previousState
|
||||||
|
|
||||||
|
case (.notificationSettings, .presentGlobalNotificationSettingsScreen):
|
||||||
|
return .globalNotificationSettings
|
||||||
|
case (.globalNotificationSettings, .dismissGlobalNotificationSettingsScreen):
|
||||||
|
return .notificationSettings
|
||||||
|
|
||||||
|
case (.roomMemberDetails(_, let previousState), .presentUserProfile(let userID)):
|
||||||
|
return .userProfile(userID: userID, previousState: previousState)
|
||||||
|
case (.userProfile(_, let previousState), .dismissUserProfile):
|
||||||
|
return previousState
|
||||||
|
|
||||||
|
case (.pollsHistory, .presentPollForm):
|
||||||
|
return .pollsHistoryForm
|
||||||
|
case (.pollsHistoryForm, .dismissPollForm):
|
||||||
|
return .pollsHistory
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user