Add timeline item selection tracking
This commit is contained in:
parent
e88e4f65a5
commit
fca35060d5
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user