Add timeline item selection tracking

This commit is contained in:
Maurice Parker 2020-07-25 10:56:21 -05:00
parent e88e4f65a5
commit fca35060d5

View File

@ -130,40 +130,51 @@ class TimelineModel: ObservableObject, UndoableCommandRunner {
} }
.share(replay: 1) .share(replay: 1)
.eraseToAnyPublisher() .eraseToAnyPublisher()
// Set the timeline name for display
selectedFeedsPublisher
.map { feeds -> String in
switch feeds.count {
case 0:
return ""
case 1:
return feeds.first!.nameForDisplay
default:
return NSLocalizedString("Multiple", comment: "Multiple")
}
}
.assign(to: &$nameForDisplay)
} }
func subscribeToSelectedArticleSelectionChanges() { func subscribeToSelectedArticleSelectionChanges() {
// $selectedArticleIDs.map { [weak self] articleIDs in guard let timelineItemsPublisher = timelineItemsPublisher else { return }
// return articleIDs.compactMap { self?.idToArticleDictionary[$0] }
// } let timelineSelectedIDsPublisher = $selectedTimelineItemIDs
// .assign(to: &$selectedArticles) .withLatestFrom(timelineItemsPublisher, resultSelector: { timelineItemIds, timelineItems -> [TimelineItem] in
// return timelineItemIds.compactMap { timelineItems[$0] }
// $selectedArticleID.compactMap { [weak self] articleID in })
// if let articleID = articleID, let article = self?.idToArticleDictionary[articleID] {
// return [article] let timelineSelectedIDPublisher = $selectedTimelineItemID
// } else { .withLatestFrom(timelineItemsPublisher, resultSelector: { timelineItemId, timelineItems -> [TimelineItem] in
// return nil if let id = timelineItemId, let item = timelineItems[id] {
// } return [item]
// } } else {
// .assign(to: &$selectedArticles) return [TimelineItem]()
// }
// // Assign the selected timeline items })
// $selectedArticles.compactMap { [weak self] selectedArticles in
// return selectedArticles.compactMap { selectedTimelineItemsPublisher = timelineSelectedIDsPublisher
// if let index = self?.idToTimelineItemDictionary[$0.articleID] { .merge(with: timelineSelectedIDPublisher)
// return self?.timelineItems[index] .share(replay: 1)
// } .eraseToAnyPublisher()
// return nil
// } // Automatically mark a selected record as read
// }.assign(to: &$selectedTimelineItems) selectedTimelineItemsPublisher!
// .filter { $0.count == 1 }
// // Automatically mark a selected record as read .compactMap { $0.first?.article }
// $selectedArticles .filter { !$0.status.read }
// .filter { $0.count == 1 } .sink { markArticles(Set([$0]), statusKey: .read, flag: true) }
// .compactMap { $0.first } .store(in: &cancellables)
// .filter { !$0.status.read }
// .sink { markArticles(Set([$0]), statusKey: .read, flag: true) }
// .store(in: &cancellables)
} }
// MARK: API // MARK: API