From 67eb3197031c74b55910fb0a6ab506e930afd27e Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 25 Jul 2020 16:28:23 -0500 Subject: [PATCH] Make selected articles available to Share dialog --- Multiplatform/Shared/SceneModel.swift | 3 +-- Multiplatform/Shared/Timeline/TimelineModel.swift | 12 ++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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 }