diff --git a/Multiplatform/Shared/SceneModel.swift b/Multiplatform/Shared/SceneModel.swift index d1568bbce..0c7b6bf4d 100644 --- a/Multiplatform/Shared/SceneModel.swift +++ b/Multiplatform/Shared/SceneModel.swift @@ -25,8 +25,7 @@ final class SceneModel: ObservableObject { @Published var accountSyncErrors: [AccountSyncError] = [] var selectedArticles: [Article] { - return [Article]() -// timelineModel.selectedArticles + timelineModel.selectedArticles } private var refreshProgressModel: RefreshProgressModel? = nil diff --git a/Multiplatform/Shared/Timeline/TimelineModel.swift b/Multiplatform/Shared/Timeline/TimelineModel.swift index 5ed918ffc..fb3e9a8c3 100644 --- a/Multiplatform/Shared/Timeline/TimelineModel.swift +++ b/Multiplatform/Shared/Timeline/TimelineModel.swift @@ -30,6 +30,8 @@ class TimelineModel: ObservableObject, UndoableCommandRunner { @Published var selectedTimelineItemID: String? = nil // Don't use directly. Use selectedTimelineItemsPublisher @Published var isReadFiltered: Bool? = nil + var selectedArticles = [Article]() + var timelineItemsPublisher: AnyPublisher? var articlesPublisher: AnyPublisher<[Article], Never>? var selectedTimelineItemsPublisher: AnyPublisher<[TimelineItem], Never>? @@ -57,7 +59,7 @@ class TimelineModel: ObservableObject, UndoableCommandRunner { subscribeToUserDefaultsChanges() subscribeToReadFilterChanges() subscribeToArticleFetchChanges() - subscribeToSelectedArticleSelectionChanges() + subscribeToArticleSelectionChanges() subscribeToArticleStatusChanges() // subscribeToAccountDidDownloadArticles() subscribeToArticleMarkingEvents() @@ -222,7 +224,7 @@ private extension TimelineModel { .assign(to: &$nameForDisplay) } - func subscribeToSelectedArticleSelectionChanges() { + func subscribeToArticleSelectionChanges() { guard let timelineItemsPublisher = timelineItemsPublisher else { return } let timelineSelectedIDsPublisher = $selectedTimelineItemIDs @@ -249,6 +251,12 @@ private extension TimelineModel { .share(replay: 1) .eraseToAnyPublisher() + selectedArticlesPublisher! + .sink { [weak self] selectedArticles in + self?.selectedArticles = selectedArticles + } + .store(in: &cancellables) + // Automatically mark a selected record as read selectedTimelineItemsPublisher! .filter { $0.count == 1 }