ConferenceRouteState.swift 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // ViewRouteState.swift
  3. // TUIRoomKit
  4. //
  5. // Created by aby on 2024/6/19.
  6. //
  7. import Foundation
  8. enum NavigationAction<ViewRoute>: Equatable where ViewRoute: Equatable {
  9. case present(route: ViewRoute)
  10. case push(route: ViewRoute)
  11. case presented(route: ViewRoute)
  12. }
  13. typealias ConferenceNavigation = NavigationAction<ConferenceRoute>
  14. struct ConferenceRouteState {
  15. var currentRouteAction: ConferenceNavigation = .presented(route: .none)
  16. var currentRoute: ConferenceRoute = .none
  17. }
  18. enum ConferenceNavigationAction {
  19. static let key = "conference.navigation.action"
  20. static let navigate = ActionTemplate(id: key.appending("navigate"), payloadType: ConferenceNavigation.self)
  21. }
  22. let routeReducer = Reducer<ConferenceRouteState>(
  23. ReduceOn(ConferenceNavigationAction.navigate, reduce: { state, action in
  24. state.currentRouteAction = action.payload
  25. switch action.payload {
  26. case let .presented(route: route):
  27. state.currentRoute = route
  28. default:
  29. break
  30. }
  31. })
  32. )