From 750159e17b6b4176ba3371527eccdf7697c5e844 Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Wed, 9 Apr 2025 17:12:43 +0200 Subject: [PATCH] updated preview tests --- .../Sources/Application/AppCoordinator.swift | 7 +++++++ .../View/AdvancedSettingsScreen.swift | 17 ++++++++++------ .../Screens/Timeline/TimelineViewModel.swift | 20 ++++++++++--------- .../advancedSettingsScreen.iPad-en-GB-0.png | 4 ++-- .../advancedSettingsScreen.iPad-pseudo-0.png | 4 ++-- ...vancedSettingsScreen.iPhone-16-en-GB-0.png | 4 ++-- ...ancedSettingsScreen.iPhone-16-pseudo-0.png | 4 ++-- 7 files changed, 37 insertions(+), 23 deletions(-) diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift index 861e6a371..695a8a834 100644 --- a/ElementX/Sources/Application/AppCoordinator.swift +++ b/ElementX/Sources/Application/AppCoordinator.swift @@ -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)") diff --git a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/View/AdvancedSettingsScreen.swift b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/View/AdvancedSettingsScreen.swift index e2e2df9df..b99395655 100644 --- a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/View/AdvancedSettingsScreen.swift +++ b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/View/AdvancedSettingsScreen.swift @@ -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)] + } +} diff --git a/ElementX/Sources/Screens/Timeline/TimelineViewModel.swift b/ElementX/Sources/Screens/Timeline/TimelineViewModel.swift index c6106e665..9ec960bc4 100644 --- a/ElementX/Sources/Screens/Timeline/TimelineViewModel.swift +++ b/ElementX/Sources/Screens/Timeline/TimelineViewModel.swift @@ -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 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) diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-en-GB-0.png index a9d3a8ae9..2dd772816 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56abc8e0527cef938e91400dcee94e42e175c6a16c004623ab449fbe73c6f128 -size 164157 +oid sha256:29bea26c7a1777f0ba6143ca67cfb6a6798b0acb616727cf56a475740c1d6cf6 +size 184442 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-pseudo-0.png index 618eee0bc..a97744011 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f43d6fd518a5e05fddc64d8a8202a156cb7281a75df14f5a34879af7ab8b1471 -size 192479 +oid sha256:e0e5e3c93611270fbca8c195f19b882e04045c94d6db5ed78e59fcbeb5be690f +size 217644 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-en-GB-0.png index 1f1b40ae4..6b521593d 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:757b7bee819f1553d1470763a003da399c368ea722b29aef090b9bbf4095fb8f -size 114474 +oid sha256:0eba191d57ac01baf5a87adbb52c5b8493cca2c7ab8d1a10d5e905eb78b2ee32 +size 129615 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-pseudo-0.png index 407a29a40..ede7829f8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/advancedSettingsScreen.iPhone-16-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2bc7dc5754c2802ac9f7c2ea28e43cc9c50ccd2ddb4ff3c051437225707e604 -size 163544 +oid sha256:74b86514beb0ce8b06cfbd3e3b015f2319ab6014a6fc6da8978fc19a111beced +size 168748