Add downloaded filter
This commit is contained in:
@ -11,6 +11,8 @@ extension LinkedItemFilter {
|
||||
return LocalText.readLaterGeneric
|
||||
case .newsletters:
|
||||
return LocalText.newslettersGeneric
|
||||
case .downloaded:
|
||||
return "Downloaded"
|
||||
case .feeds:
|
||||
return "Feeds"
|
||||
case .recommended:
|
||||
|
||||
@ -203,7 +203,8 @@ import Views
|
||||
await group.waitForAll()
|
||||
}
|
||||
|
||||
let shouldSearch = items.count < 1 || isRefresh
|
||||
let filter = LinkedItemFilter(rawValue: appliedFilter)
|
||||
let shouldSearch = items.count < 1 || isRefresh && filter != LinkedItemFilter.downloaded
|
||||
if shouldSearch {
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
} else {
|
||||
@ -220,7 +221,10 @@ import Views
|
||||
isLoading = true
|
||||
showLoadingBar = true
|
||||
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
let filter = LinkedItemFilter(rawValue: appliedFilter)
|
||||
if filter != LinkedItemFilter.downloaded {
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
}
|
||||
|
||||
isLoading = false
|
||||
showLoadingBar = false
|
||||
|
||||
@ -5,6 +5,7 @@ public enum LinkedItemFilter: String, CaseIterable {
|
||||
case feeds
|
||||
case readlater
|
||||
case newsletters
|
||||
case downloaded
|
||||
case recommended
|
||||
case all
|
||||
case archived
|
||||
@ -22,6 +23,8 @@ public extension LinkedItemFilter {
|
||||
return "label:RSS"
|
||||
case .readlater:
|
||||
return "in:library"
|
||||
case .downloaded:
|
||||
return ""
|
||||
case .newsletters:
|
||||
return "in:inbox label:Newsletter"
|
||||
case .recommended:
|
||||
@ -73,6 +76,19 @@ public extension LinkedItemFilter {
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [
|
||||
undeletedPredicate, notInArchivePredicate, nonNewsletterLabelPredicate, nonRSSPredicate
|
||||
])
|
||||
case .downloaded:
|
||||
// include pdf only
|
||||
let hasHTMLContent = NSPredicate(
|
||||
format: "htmlContent.length > 0"
|
||||
)
|
||||
let isPDFPredicate = NSPredicate(
|
||||
format: "%K == %@", #keyPath(LinkedItem.contentReader), "PDF"
|
||||
)
|
||||
let localPDFURL = NSPredicate(
|
||||
format: "localPDF.length > 0"
|
||||
)
|
||||
let downloadedPDF = NSCompoundPredicate(andPredicateWithSubpredicates: [isPDFPredicate, localPDFURL])
|
||||
return NSCompoundPredicate(orPredicateWithSubpredicates: [hasHTMLContent, downloadedPDF])
|
||||
case .newsletters:
|
||||
// non-archived or deleted items with the Newsletter label
|
||||
let newsletterLabelPredicate = NSPredicate(
|
||||
|
||||
Reference in New Issue
Block a user