Fixes #2486 - Implement blocked users management in the app settings

This commit is contained in:
Stefan Ceriu
2024-02-28 13:21:54 +02:00
committed by GitHub
parent 93de35a772
commit c55dddc081
46 changed files with 624 additions and 98 deletions

View File

@@ -29,11 +29,12 @@ enum TemplateScreenCoordinatorAction {
final class TemplateScreenCoordinator: CoordinatorProtocol {
private let parameters: TemplateScreenCoordinatorParameters
private var viewModel: TemplateScreenViewModelProtocol
private let actionsSubject: PassthroughSubject<TemplateScreenCoordinatorAction, Never> = .init()
private var cancellables = Set<AnyCancellable>()
private let viewModel: TemplateScreenViewModelProtocol
var actions: AnyPublisher<TemplateScreenCoordinatorAction, Never> {
private var cancellables = Set<AnyCancellable>()
private let actionsSubject: PassthroughSubject<TemplateScreenCoordinatorAction, Never> = .init()
var actionsPublisher: AnyPublisher<TemplateScreenCoordinatorAction, Never> {
actionsSubject.eraseToAnyPublisher()
}
@@ -44,7 +45,7 @@ final class TemplateScreenCoordinator: CoordinatorProtocol {
}
func start() {
viewModel.actions.sink { [weak self] action in
viewModel.actionsPublisher.sink { [weak self] action in
MXLog.info("Coordinator: received view model action: \(action)")
guard let self else { return }

View File

@@ -20,9 +20,8 @@ import SwiftUI
typealias TemplateScreenViewModelType = StateStoreViewModel<TemplateScreenViewState, TemplateScreenViewAction>
class TemplateScreenViewModel: TemplateScreenViewModelType, TemplateScreenViewModelProtocol {
private var actionsSubject: PassthroughSubject<TemplateScreenViewModelAction, Never> = .init()
var actions: AnyPublisher<TemplateScreenViewModelAction, Never> {
private let actionsSubject: PassthroughSubject<TemplateScreenViewModelAction, Never> = .init()
var actionsPublisher: AnyPublisher<TemplateScreenViewModelAction, Never> {
actionsSubject.eraseToAnyPublisher()
}

View File

@@ -18,6 +18,6 @@ import Combine
@MainActor
protocol TemplateScreenViewModelProtocol {
var actions: AnyPublisher<TemplateScreenViewModelAction, Never> { get }
var actionsPublisher: AnyPublisher<TemplateScreenViewModelAction, Never> { get }
var context: TemplateScreenViewModelType.Context { get }
}