// // Copyright 2022-2024 New Vector Ltd. // // SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial // Please see LICENSE files in the repository root for full details. // import Combine import SwiftUI enum LogViewerScreenCoordinatorAction { case done } final class LogViewerScreenCoordinator: CoordinatorProtocol { private var viewModel: LogViewerScreenViewModelProtocol private var cancellables = Set() private let actionsSubject: PassthroughSubject = .init() var actions: AnyPublisher { actionsSubject.eraseToAnyPublisher() } init() { viewModel = LogViewerScreenViewModel() } func start() { viewModel.actions.sink { [weak self] action in MXLog.info("Coordinator: received view model action: \(action)") guard let self else { return } switch action { case .done: self.actionsSubject.send(.done) } } .store(in: &cancellables) } func toPresentable() -> AnyView { AnyView(LogViewerScreen(context: viewModel.context)) } }