Bookmark widget data update

This commit is contained in:
Chris Li 2017-02-03 15:51:23 -05:00
parent d6718d2d67
commit 874d1da6fc
3 changed files with 32 additions and 13 deletions

View File

@ -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()
}
}

View File

@ -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)

View File

@ -26,7 +26,7 @@ class UpdateWidgetDataSourceOperation: Procedure {
var articles = [Article]()
context.performAndWait {
articles = Article.fetchRecentBookmarks(30, context: self.context)
}
var bookmarks = [NSDictionary]()