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 a0b510cb6b
commit 7615e97c7f
46 changed files with 624 additions and 98 deletions
@@ -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 }
@@ -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()
}
@@ -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 }
}