import Combine import SwiftUI import Swinject protocol Router { var mainModalScreen: CurrentValueSubject { get } var mainSecondaryModalView: CurrentValueSubject { get } var alertMessage: PassthroughSubject { get } func view(for screen: Screen) -> AnyView } final class BaseRouter: Router { let mainModalScreen = CurrentValueSubject(nil) let mainSecondaryModalView = CurrentValueSubject(nil) let alertMessage = PassthroughSubject() private let resolver: Resolver init(resolver: Resolver) { self.resolver = resolver } func view(for screen: Screen) -> AnyView { screen.view(resolver: resolver).asAny() } }