mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-26 21:39:37 -04:00
Observe article
This commit is contained in:
parent
4f314eef8f
commit
cbbd1ebcd3
@ -20,7 +20,6 @@ class MainController: UIViewController {
|
||||
@IBOutlet weak var tocHeightConstraint: NSLayoutConstraint!
|
||||
@IBOutlet weak var tocLeadSpacing: NSLayoutConstraint!
|
||||
|
||||
|
||||
let searchBar = SearchBar()
|
||||
lazy var controllers = Controllers()
|
||||
lazy var buttons = Buttons()
|
||||
@ -28,6 +27,13 @@ class MainController: UIViewController {
|
||||
var isShowingTableOfContents = false
|
||||
private(set) var tableOfContentsController: TableOfContentsController?
|
||||
|
||||
private var observerContext = 0
|
||||
var article: Article? {
|
||||
didSet {
|
||||
oldValue?.removeObserver(self, forKeyPath: "isBookmarked", context: &observerContext)
|
||||
article?.addObserver(self, forKeyPath: "isBookmarked", options: [.new, .old], context: &observerContext)
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
@ -73,6 +79,16 @@ class MainController: UIViewController {
|
||||
tableOfContentsController?.delegate = self
|
||||
}
|
||||
}
|
||||
|
||||
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
||||
guard context == &observerContext else {
|
||||
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
|
||||
return
|
||||
}
|
||||
if let article = object as? Article {
|
||||
buttons.bookmark.isHighlighted = article.isBookmarked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Web
|
||||
@ -123,8 +139,9 @@ extension MainController: UIWebViewDelegate, SFSafariViewControllerDelegate {
|
||||
|
||||
article.title = title
|
||||
article.snippet = JS.getSnippet(from: webView)
|
||||
article.bookmarkDate = Date()
|
||||
article.lastReadDate = Date()
|
||||
article.thumbImagePath = URLResponseCache.shared.firstImage()?.path
|
||||
self.article = article
|
||||
}
|
||||
|
||||
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
|
||||
@ -273,7 +290,6 @@ extension MainController: ButtonDelegates {
|
||||
|
||||
showBookmarkHUD()
|
||||
controllers.bookmarkHUD.bookmarkAdded = article.isBookmarked
|
||||
buttons.bookmark.isHighlighted = article.isBookmarked
|
||||
|
||||
indexCoreSpotlight(article: article)
|
||||
// let operation = BookmarkSyncOperation(articleURL: url)
|
||||
@ -358,31 +374,6 @@ extension MainController: TableOfContentsDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Welcome
|
||||
|
||||
extension MainController {
|
||||
func showWelcome() {
|
||||
let controller = controllers.welcome
|
||||
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
||||
addChildViewController(controller)
|
||||
view.insertSubview(controller.view, aboveSubview: webView)
|
||||
let views = ["view": controller.view]
|
||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: .alignAllTop, metrics: nil, views: views))
|
||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: .alignAllLeft, metrics: nil, views: views))
|
||||
controller.didMove(toParentViewController: self)
|
||||
}
|
||||
|
||||
func hideWelcome() {
|
||||
guard let controller = welcomeController else {return}
|
||||
controller.removeFromParentViewController()
|
||||
controller.view.removeFromSuperview()
|
||||
}
|
||||
|
||||
var welcomeController: WelcomeController? {
|
||||
return childViewControllers.flatMap({$0 as? WelcomeController}).first
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Bookmark
|
||||
|
||||
extension MainController: UIViewControllerTransitioningDelegate {
|
||||
@ -409,6 +400,31 @@ extension MainController: UIViewControllerTransitioningDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Welcome
|
||||
|
||||
extension MainController {
|
||||
func showWelcome() {
|
||||
let controller = controllers.welcome
|
||||
controller.view.translatesAutoresizingMaskIntoConstraints = false
|
||||
addChildViewController(controller)
|
||||
view.insertSubview(controller.view, aboveSubview: webView)
|
||||
let views = ["view": controller.view]
|
||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: .alignAllTop, metrics: nil, views: views))
|
||||
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: .alignAllLeft, metrics: nil, views: views))
|
||||
controller.didMove(toParentViewController: self)
|
||||
}
|
||||
|
||||
func hideWelcome() {
|
||||
guard let controller = welcomeController else {return}
|
||||
controller.removeFromParentViewController()
|
||||
controller.view.removeFromSuperview()
|
||||
}
|
||||
|
||||
var welcomeController: WelcomeController? {
|
||||
return childViewControllers.flatMap({$0 as? WelcomeController}).first
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - SFSafariViewControllerDelegate
|
||||
|
||||
extension MainController {
|
||||
|
Loading…
x
Reference in New Issue
Block a user