updated preview tests

This commit is contained in:
Mauro Romito
2025-04-09 17:12:43 +02:00
committed by Mauro
parent bf875a23ce
commit e5e7fc6c55
7 changed files with 37 additions and 23 deletions
@@ -371,6 +371,13 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
/// Perform any required migrations for the app to function correctly.
private func performMigrationsIfNecessary(from oldVersion: Version, to newVersion: Version) {
// Migration for the old `hideTimelineMedia` flag.
if let userDefaults = UserDefaults(suiteName: InfoPlistReader.main.appGroupIdentifier),
let hideTimelineMedia = userDefaults.value(forKey: "hideTimelineMedia") as? Bool {
appSettings.timelineMediaVisibility = hideTimelineMedia ? .never : .always
userDefaults.removeObject(forKey: "hideTimelineMedia")
}
guard oldVersion != newVersion else { return }
MXLog.info("The app was upgraded from \(oldVersion) to \(newVersion)")
@@ -54,12 +54,9 @@ struct AdvancedSettingsScreen: View {
private var timelineMediaSection: some View {
Section {
ListRow(label: .plain(title: L10n.screenAdvancedSettingsShowMediaTimelineAlwaysShow),
kind: .selection(isSelected: context.timelineMediaVisibility == .always) { context.timelineMediaVisibility = .always })
ListRow(label: .plain(title: L10n.screenAdvancedSettingsShowMediaTimelinePrivateRooms),
kind: .selection(isSelected: context.timelineMediaVisibility == .privateOnly) { context.timelineMediaVisibility = .privateOnly })
ListRow(label: .plain(title: L10n.screenAdvancedSettingsShowMediaTimelineAlwaysHide),
kind: .selection(isSelected: context.timelineMediaVisibility == .never) { context.timelineMediaVisibility = .never })
ListRow(label: .plain(title: L10n.screenAdvancedSettingsShowMediaTimelineTitle),
kind: .inlinePicker(selection: $context.timelineMediaVisibility,
items: TimelineMediaVisibility.items))
} header: {
Text(L10n.screenAdvancedSettingsShowMediaTimelineTitle)
.compoundListSectionHeader()
@@ -94,3 +91,11 @@ struct AdvancedSettingsScreen_Previews: PreviewProvider, TestablePreview {
}
}
}
private extension TimelineMediaVisibility {
static var items: [(title: String, tag: TimelineMediaVisibility)] {
[(title: L10n.screenAdvancedSettingsShowMediaTimelineAlwaysShow, tag: .always),
(title: L10n.screenAdvancedSettingsShowMediaTimelinePrivateRooms, tag: .privateOnly),
(title: L10n.screenAdvancedSettingsShowMediaTimelineAlwaysHide, tag: .never)]
}
}
@@ -528,18 +528,20 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
.store(in: &cancellables)
appSettings.$timelineMediaVisibility
.combineLatest(roomProxy.infoPublisher
.map(\.isPublic)
.removeDuplicates()
.receive(on: DispatchQueue.main))
.map { timelineMediaVisibility, isPublic in
.removeDuplicates()
.flatMap { [weak self] timelineMediaVisibility -> AnyPublisher<Bool, Never> in
switch timelineMediaVisibility {
case .always:
false
case .privateOnly:
isPublic
return Just(false).eraseToAnyPublisher()
case .never:
true
return Just(true).eraseToAnyPublisher()
case .privateOnly:
guard let self else { return Just(false).eraseToAnyPublisher() }
return roomProxy.infoPublisher
.map(\.isPublic)
.removeDuplicates()
.receive(on: DispatchQueue.main)
.eraseToAnyPublisher()
}
}
.weakAssign(to: \.state.hideTimelineMedia, on: self)