mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
updated preview tests
This commit is contained in:
@@ -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)")
|
||||
|
||||
+11
-6
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user