Router.swift 644 B

123456789101112131415161718192021222324
  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. func view(for screen: Screen) -> AnyView
  8. }
  9. final class BaseRouter: Router {
  10. let mainModalScreen = CurrentValueSubject<Screen?, Never>(nil)
  11. let mainSecondaryModalView = CurrentValueSubject<AnyView?, Never>(nil)
  12. private let resolver: Resolver
  13. init(resolver: Resolver) {
  14. self.resolver = resolver
  15. }
  16. func view(for screen: Screen) -> AnyView {
  17. screen.view(resolver: resolver).asAny()
  18. }
  19. }