From 495de1f08d8bb6351ffde7252ea572323e224ebc Mon Sep 17 00:00:00 2001 From: Chris Li Date: Mon, 12 Sep 2016 11:22:14 -0400 Subject: [PATCH] article object when book loading finishes --- Kiwix-iOS/Controller/Main/JSInjection.swift | 4 ++++ Kiwix-iOS/Controller/Main/MainController.swift | 4 ++-- .../Controller/Main/MainControllerDelegates.swift | 6 ++++++ Kiwix-iOS/Info.plist | 2 +- Kiwix-iOSWidgets/Bookmarks/Info.plist | 2 +- Kiwix/CoreData/Classes/Article.swift | 14 ++++++++------ 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Kiwix-iOS/Controller/Main/JSInjection.swift b/Kiwix-iOS/Controller/Main/JSInjection.swift index 8a07c680..e6cf9fd9 100644 --- a/Kiwix-iOS/Controller/Main/JSInjection.swift +++ b/Kiwix-iOS/Controller/Main/JSInjection.swift @@ -32,6 +32,10 @@ class JSInjection { webView.stringByEvaluatingJavaScriptFromString(jString) } + class func getTitle(from webView: UIWebView) -> String? { + return webView.stringByEvaluatingJavaScriptFromString("document.title") + } + class func getTableOfContents(webView: UIWebView) -> [HTMLHeading] { guard let context = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext, let path = NSBundle.mainBundle().pathForResource("getTableOfContents", ofType: "js"), diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index cc54f323..490abeda 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -36,8 +36,8 @@ class MainController: UIViewController { newArticle?.addObserver(self, forKeyPath: "isBookmarked", options: .New, context: context) } didSet { - // searchbar title - // bookmarked or not + configureSearchBarPlaceHolder() + configureBookmarkButton() } } diff --git a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift index f6833370..8d1e09ae 100644 --- a/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift +++ b/Kiwix-iOS/Controller/Main/MainControllerDelegates.swift @@ -7,6 +7,7 @@ // import UIKit +import CoreData import SafariServices import JavaScriptCore import DZNEmptyDataSet @@ -29,6 +30,11 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate, func webViewDidFinishLoad(webView: UIWebView) { URLResponseCache.shared.stop() + guard let url = webView.request?.URL, + let article = Article.addOrUpdate(url: url, context: NSManagedObjectContext.mainQueueContext) else {return} + article.title = JSInjection.getTitle(from: webView) + article.thumbImageURL = URLResponseCache.shared.firstImage()?.absoluteString + self.article = article } func webView(webView: UIWebView, didFailLoadWithError error: NSError) { diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 6df7630b..3659a22a 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.8.140 + 1.8.156 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOSWidgets/Bookmarks/Info.plist b/Kiwix-iOSWidgets/Bookmarks/Info.plist index 5c3fc558..d124dd33 100644 --- a/Kiwix-iOSWidgets/Bookmarks/Info.plist +++ b/Kiwix-iOSWidgets/Bookmarks/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 1.8.142 + 1.8.158 NSExtension NSExtensionMainStoryboard diff --git a/Kiwix/CoreData/Classes/Article.swift b/Kiwix/CoreData/Classes/Article.swift index f42d93a9..228c665b 100644 --- a/Kiwix/CoreData/Classes/Article.swift +++ b/Kiwix/CoreData/Classes/Article.swift @@ -12,15 +12,17 @@ import CoreData class Article: NSManagedObject { - class func addOrUpdate(title: String? = nil, url: NSURL, book: Book, context: NSManagedObjectContext) -> Article? { + class func addOrUpdate(url url: NSURL, context: NSManagedObjectContext) -> Article? { + guard let bookID = url.host, + let book = Book.fetch(bookID, context: context), + let url = url.absoluteString else {return nil} + let fetchRequest = NSFetchRequest(entityName: "Article") - fetchRequest.predicate = NSPredicate(format: "url = %@", url.absoluteString!) + fetchRequest.predicate = NSPredicate(format: "url = %@", url) + let article = Article.fetch(fetchRequest, type: Article.self, context: context)?.first ?? insert(Article.self, context: context) - - article?.title = title - article?.url = url.absoluteString! + article?.url = url article?.book = book - return article }