Updated sorting for feature items
This commit is contained in:
@ -51,15 +51,11 @@ import Views
|
||||
self.items = items
|
||||
|
||||
// now try to update the continue reading items:
|
||||
featureItems = items.filter { item in
|
||||
featureItems = (items.filter { item in
|
||||
featureFilter.predicate.evaluate(with: item)
|
||||
}
|
||||
.sorted(by: { left, right in
|
||||
if let lreadAt = left.readAt, let rreadAt = right.readAt {
|
||||
return lreadAt > rreadAt
|
||||
}
|
||||
return false
|
||||
})
|
||||
} as NSArray)
|
||||
.sortedArray(using: [featureFilter.sortDescriptor])
|
||||
.compactMap { $0 as? LinkedItem }
|
||||
}
|
||||
|
||||
func handleReaderItemNotification(objectID: NSManagedObjectID, dataService: DataService) {
|
||||
|
||||
@ -125,13 +125,23 @@ public extension FeaturedItemFilter {
|
||||
let newsletterLabelPredicate = NSPredicate(
|
||||
format: "SUBQUERY(labels, $label, $label.name == \"Newsletter\").@count > 0"
|
||||
)
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [notInArchivePredicate, newsletterLabelPredicate])
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [notInArchivePredicate, undeletedPredicate, newsletterLabelPredicate])
|
||||
case .recommended:
|
||||
// non-archived or deleted items with the Newsletter label
|
||||
let recommendedPredicate = NSPredicate(
|
||||
format: "recommendations.@count > 0"
|
||||
)
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [notInArchivePredicate, recommendedPredicate])
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [notInArchivePredicate, undeletedPredicate, recommendedPredicate])
|
||||
}
|
||||
}
|
||||
|
||||
var sortDescriptor: NSSortDescriptor {
|
||||
let savedAtSort = NSSortDescriptor(key: #keyPath(LinkedItem.savedAt), ascending: false)
|
||||
switch self {
|
||||
case .continueReading:
|
||||
return NSSortDescriptor(key: #keyPath(LinkedItem.readAt), ascending: false)
|
||||
default:
|
||||
return savedAtSort
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user