Router.swift 768 B

123456789101112131415161718192021222324252627
  1. import Combine
  2. import SwiftUI
  3. import Swinject
  4. protocol Router {
  5. var mainModalScreen: CurrentValueSubject<Screen?, Never> { get }
  6. var mainSecondaryModalView: CurrentValueSubject<AnyView?, Never> { get }
  7. var alertMessage: PassthroughSubject<String, Never> { get }
  8. func view(for screen: Screen) -> AnyView
  9. }
  10. final class BaseRouter: Router {
  11. let mainModalScreen = CurrentValueSubject<Screen?, Never>(nil)
  12. let mainSecondaryModalView = CurrentValueSubject<AnyView?, Never>(nil)
  13. let alertMessage = PassthroughSubject<String, Never>()
  14. private let resolver: Resolver
  15. init(resolver: Resolver) {
  16. self.resolver = resolver
  17. }
  18. func view(for screen: Screen) -> AnyView {
  19. screen.view(resolver: resolver).asAny()
  20. }
  21. }