mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Clear cache on changing the threads FF (#4581)
* clear cache on changing the threads FF # Conflicts: # PreviewTests/Sources/__Snapshots__/PreviewTests/labsScreen.iPad-pseudo-0.png # PreviewTests/Sources/__Snapshots__/PreviewTests/labsScreen.iPhone-16-pseudo-0.png * fix tests
This commit is contained in:
@@ -14,14 +14,35 @@ struct LabsScreenCoordinatorParameters {
|
||||
let appSettings: AppSettings
|
||||
}
|
||||
|
||||
enum LabsScreenCoordinatorAction {
|
||||
case clearCache
|
||||
}
|
||||
|
||||
final class LabsScreenCoordinator: CoordinatorProtocol {
|
||||
private let viewModel: LabsScreenViewModelProtocol
|
||||
|
||||
private let actionsSubject: PassthroughSubject<LabsScreenCoordinatorAction, Never> = .init()
|
||||
var actions: AnyPublisher<LabsScreenCoordinatorAction, Never> {
|
||||
actionsSubject.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
private var cancellables = Set<AnyCancellable>()
|
||||
|
||||
init(parameters: LabsScreenCoordinatorParameters) {
|
||||
viewModel = LabsScreenViewModel(labsOptions: parameters.appSettings)
|
||||
}
|
||||
|
||||
func start() { }
|
||||
func start() {
|
||||
viewModel
|
||||
.actionsPublisher
|
||||
.sink { [weak self] action in
|
||||
switch action {
|
||||
case .clearCache:
|
||||
self?.actionsSubject.send(.clearCache)
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
|
||||
func toPresentable() -> AnyView {
|
||||
AnyView(LabsScreen(context: viewModel.context))
|
||||
|
||||
@@ -7,9 +7,13 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
enum LabsScreenViewAction { }
|
||||
enum LabsScreenViewAction {
|
||||
case clearCache
|
||||
}
|
||||
|
||||
enum LabsScreenViewModelAction { }
|
||||
enum LabsScreenViewModelAction {
|
||||
case clearCache
|
||||
}
|
||||
|
||||
struct LabsScreenViewState: BindableState {
|
||||
var bindings: LabsScreenViewStateBindings
|
||||
|
||||
@@ -22,4 +22,11 @@ class LabsScreenViewModel: LabsScreenViewModelType, LabsScreenViewModelProtocol
|
||||
|
||||
super.init(initialViewState: state)
|
||||
}
|
||||
|
||||
override func process(viewAction: LabsScreenViewAction) {
|
||||
switch viewAction {
|
||||
case .clearCache:
|
||||
actionsSubject.send(.clearCache)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ struct LabsScreen: View {
|
||||
var body: some View {
|
||||
Form {
|
||||
header
|
||||
settingsSection
|
||||
threadsSection
|
||||
}
|
||||
.compoundList()
|
||||
.navigationTitle(L10n.screenLabsTitle)
|
||||
@@ -39,16 +39,23 @@ struct LabsScreen: View {
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
}
|
||||
.compoundListSectionHeader()
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
}
|
||||
}
|
||||
|
||||
private var settingsSection: some View {
|
||||
private var threadsSection: some View {
|
||||
Section {
|
||||
ListRow(label: .default(title: L10n.screenLabsEnableThreads,
|
||||
icon: \.threads),
|
||||
kind: .toggle($context.threadsEnabled))
|
||||
} footer: {
|
||||
Text(L10n.screenLabsEnableThreadsDescription)
|
||||
.compoundListSectionFooter()
|
||||
}
|
||||
.onChange(of: context.threadsEnabled) { _, _ in
|
||||
context.send(viewAction: .clearCache)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,7 +63,7 @@ struct LabsScreen: View {
|
||||
// MARK: - Previews
|
||||
|
||||
struct LabsScreen_Previews: PreviewProvider, TestablePreview {
|
||||
static let viewModel = LabsScreenViewModel(labsOptions: ServiceLocator.shared.settings)
|
||||
static let viewModel = LabsScreenViewModel(labsOptions: AppSettings())
|
||||
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
|
||||
Reference in New Issue
Block a user