From 9238a2462ba62df4e8c750bb56a1612dae299d2c Mon Sep 17 00:00:00 2001 From: Fabricio Alvarenga Date: Wed, 28 Jan 2026 18:45:21 -0300 Subject: [PATCH 1/3] Create news detail view --- .../Sources/NewsLibrary/ViewModel/NewsViewModel.swift | 1 + .../NewsLibrary/Sources/NewsLibrary/Views/NewsView.swift | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift index 3d556f9e..e791e45c 100644 --- a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift +++ b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift @@ -10,6 +10,7 @@ import UIComponentsLibrary class NewsViewModel { var options: Options = .home var status: APIStatus = .idle + var selectedNews: FeedDB? = nil enum Options: Equatable { case home diff --git a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/Views/NewsView.swift b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/Views/NewsView.swift index 5c5d9f97..300be925 100644 --- a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/Views/NewsView.swift +++ b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/Views/NewsView.swift @@ -20,6 +20,7 @@ public struct NewsView: View { @Binding var scrollPosition: ScrollPosition @State private var search: String = "" + @State private var readingNews = false @Query private var news: [FeedDB] @@ -59,6 +60,9 @@ public struct NewsView: View { sessionState.hasFetchedFeed = true } } + .navigationDestination(isPresented: $readingNews) { + MMWebView(url: viewModel.selectedNews?.link) + } } } extension NewsView { @@ -95,6 +99,9 @@ extension NewsView { screen: nil, style: category.style )) { + viewModel.selectedNews = news[index] + readingNews.toggle() + analytics.track(.buttonTap( buttonId: AnalyticsConstants.ButtonID.newsStarted(postId: Int(news[index].postId) ?? 0).id, screen: AnalyticsConstants.Screen.news.name From a06e1c7a2218e8a2610ec03290e9b7751f086f58 Mon Sep 17 00:00:00 2001 From: Fabricio Alvarenga Date: Wed, 28 Jan 2026 19:04:50 -0300 Subject: [PATCH 2/3] Fix optional initialization with 'nil' --- .../Sources/NewsLibrary/ViewModel/NewsViewModel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift index e791e45c..26c08284 100644 --- a/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift +++ b/MacMagazine/Features/NewsLibrary/Sources/NewsLibrary/ViewModel/NewsViewModel.swift @@ -10,7 +10,7 @@ import UIComponentsLibrary class NewsViewModel { var options: Options = .home var status: APIStatus = .idle - var selectedNews: FeedDB? = nil + var selectedNews: FeedDB? enum Options: Equatable { case home From 643dacbaaf7a11929d340f1002eb939d732f7423 Mon Sep 17 00:00:00 2001 From: Fabricio Alvarenga Date: Wed, 28 Jan 2026 19:05:53 -0300 Subject: [PATCH 3/3] Fix trailing newline violation --- .../Tests/PodcastTests/PodcastViewModelTests.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/MacMagazine/Features/PodcastLibrary/Tests/PodcastTests/PodcastViewModelTests.swift b/MacMagazine/Features/PodcastLibrary/Tests/PodcastTests/PodcastViewModelTests.swift index 9fec6e91..cf2be2f8 100644 --- a/MacMagazine/Features/PodcastLibrary/Tests/PodcastTests/PodcastViewModelTests.swift +++ b/MacMagazine/Features/PodcastLibrary/Tests/PodcastTests/PodcastViewModelTests.swift @@ -358,4 +358,3 @@ private func createMockNetwork() -> [NetworkMockData] { ) ] } -