mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-28 06:25:04 -04:00
Bookmark widget data update
This commit is contained in:
parent
d6718d2d67
commit
874d1da6fc
@ -10,6 +10,7 @@ import UIKit
|
||||
import SafariServices
|
||||
import CoreSpotlight
|
||||
import CloudKit
|
||||
import NotificationCenter
|
||||
|
||||
class MainController: UIViewController {
|
||||
|
||||
@ -294,6 +295,27 @@ extension MainController: ButtonDelegates {
|
||||
}
|
||||
}
|
||||
|
||||
func updateBookmarkWidget() {
|
||||
guard let defaults = UserDefaults(suiteName: "group.kiwix") else {return}
|
||||
let bookmarks = Article
|
||||
.fetchRecentBookmarks(count: 30, context: AppDelegate.persistentContainer.viewContext)
|
||||
.flatMap { (article) -> [String: Any]? in
|
||||
guard let title = article.title,
|
||||
let data = article.thumbImageData,
|
||||
let urlString = article.url?.absoluteString else {return nil}
|
||||
return [
|
||||
"title": title,
|
||||
"thumbImageData": data,
|
||||
"url": urlString,
|
||||
"isMainPage": NSNumber(value: article.isMainPage)
|
||||
]
|
||||
}
|
||||
print(bookmarks.count)
|
||||
defaults.set(bookmarks, forKey: "bookmarks")
|
||||
NCWidgetController.widgetController().setHasContent(bookmarks.count > 0, forWidgetWithBundleIdentifier: "self.Kiwix.Bookmarks")
|
||||
|
||||
}
|
||||
|
||||
let context = AppDelegate.persistentContainer.viewContext
|
||||
guard let url = webView.request?.url,
|
||||
let article = Article.fetch(url: url, context: context) else {return}
|
||||
@ -306,8 +328,7 @@ extension MainController: ButtonDelegates {
|
||||
controllers.bookmarkHUD.bookmarkAdded = article.isBookmarked
|
||||
|
||||
indexCoreSpotlight(article: article)
|
||||
// let operation = BookmarkSyncOperation(articleURL: url)
|
||||
// GlobalQueue.shared.add(operation: operation)
|
||||
updateBookmarkWidget()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,16 +27,14 @@ class Article: NSManagedObject {
|
||||
return article
|
||||
}
|
||||
|
||||
// class func fetchRecentBookmarks(_ count: Int, context: NSManagedObjectContext) -> [Article] {
|
||||
// let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Article")
|
||||
// let dateDescriptor = NSSortDescriptor(key: "bookmarkDate", ascending: false)
|
||||
// let titleDescriptor = NSSortDescriptor(key: "title", ascending: true)
|
||||
// fetchRequest.sortDescriptors = [dateDescriptor, titleDescriptor]
|
||||
// fetchRequest.predicate = NSPredicate(format: "isBookmarked == true")
|
||||
// fetchRequest.fetchLimit = count
|
||||
// return fetch(fetchRequest, type: Article.self, context: context) ?? [Article]()
|
||||
// }
|
||||
//
|
||||
class func fetchRecentBookmarks(count: Int, context: NSManagedObjectContext) -> [Article] {
|
||||
let fetchRequest = Article.fetchRequest() as! NSFetchRequest<Article>
|
||||
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "bookmarkDate", ascending: false)]
|
||||
fetchRequest.predicate = NSPredicate(format: "isBookmarked == true")
|
||||
fetchRequest.fetchLimit = count
|
||||
return (try? context.fetch(fetchRequest)) ?? [Article]()
|
||||
}
|
||||
|
||||
class func fetchBookmarked(in book: Book, with context: NSManagedObjectContext) -> [Article] {
|
||||
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Article")
|
||||
request.predicate = NSPredicate(format: "book = %@ AND isBookmarked == true", book)
|
||||
|
@ -26,7 +26,7 @@ class UpdateWidgetDataSourceOperation: Procedure {
|
||||
|
||||
var articles = [Article]()
|
||||
context.performAndWait {
|
||||
articles = Article.fetchRecentBookmarks(30, context: self.context)
|
||||
|
||||
}
|
||||
|
||||
var bookmarks = [NSDictionary]()
|
||||
|
Loading…
x
Reference in New Issue
Block a user