import Combine import SwiftUI import Swinject enum MessageType { case info case warning case errorPump } struct MessageContent { var content: String var type: MessageType = .info } 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() } }