diff --git a/Kiwix-iOS/AppDelegate.swift b/Kiwix-iOS/AppDelegate.swift index 4566ecea..34b8b3c4 100644 --- a/Kiwix-iOS/AppDelegate.swift +++ b/Kiwix-iOS/AppDelegate.swift @@ -73,9 +73,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return true } - func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) { - // Here we get what notification permission user currently allows - } +// func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) { +// // Here we get what notification permission user currently allows +// } func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. diff --git a/Kiwix-iOS/Controller/Library/CloudBooksController.swift b/Kiwix-iOS/Controller/Library/CloudBooksController.swift index 0c15b25b..ea41d1a5 100644 --- a/Kiwix-iOS/Controller/Library/CloudBooksController.swift +++ b/Kiwix-iOS/Controller/Library/CloudBooksController.swift @@ -80,7 +80,7 @@ class CloudBooksController: LibraryBaseController, UITableViewDelegate, UITableV func showLanguageFilterController() { guard let splitViewController = splitViewController as? LibrarySplitViewController, !splitViewController.isShowingLangFilter else {return} - guard let controller = UIStoryboard.library.initViewController(LanguageFilterController.self) else {return} + let controller = UIStoryboard(name: "library", bundle: nil).instantiateViewController(withIdentifier: "LanguageFilterController") as! LanguageFilterController controller.delegate = self let navController = UINavigationController(rootViewController: controller) showDetailViewController(navController, sender: self) @@ -116,7 +116,7 @@ class CloudBooksController: LibraryBaseController, UITableViewDelegate, UITableV self.tableView.reloadEmptyDataSet() } - if let error = errors.first { + if let _ = errors.first { // handle error [network, xmlparse] } else { if operation.firstTime { @@ -307,15 +307,16 @@ class CloudBooksController: LibraryBaseController, UITableViewDelegate, UITableV fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor] fetchRequest.predicate = self.onlineCompoundPredicate - let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "language.name", cacheName: "OnlineFRC" + Bundle.buildVersion) - fetchedResultsController.delegate = self - fetchedResultsController.performFetch(deleteCache: false) - return fetchedResultsController as! NSFetchedResultsController + let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "language.name", cacheName: "OnlineFRC" + Bundle.buildVersion) + controller.delegate = self + try? controller.performFetch() + return controller as! NSFetchedResultsController }() func refreshFetchedResultController() { fetchedResultController.fetchRequest.predicate = onlineCompoundPredicate - fetchedResultController.performFetch(deleteCache: true) + NSFetchedResultsController.deleteCache(withName: fetchedResultController.cacheName) + try? fetchedResultController.performFetch() tableView.reloadData() } diff --git a/Kiwix-iOS/Controller/Library/DownloadTasksController.swift b/Kiwix-iOS/Controller/Library/DownloadTasksController.swift index 2e0e8c7d..25665932 100644 --- a/Kiwix-iOS/Controller/Library/DownloadTasksController.swift +++ b/Kiwix-iOS/Controller/Library/DownloadTasksController.swift @@ -101,8 +101,8 @@ class DownloadTasksController: LibraryBaseController, UITableViewDelegate, UITab } override func configureCell(_ cell: UITableViewCell, atIndexPath indexPath: IndexPath) { - guard let downloadTask = fetchedResultController.object(at: indexPath) as? DownloadTask, - let book = downloadTask.book, + let downloadTask = fetchedResultController.object(at: indexPath) + guard let book = downloadTask.book, let cell = cell as? DownloadBookCell else {return} cell.titleLabel.text = book.title @@ -248,10 +248,10 @@ class DownloadTasksController: LibraryBaseController, UITableViewDelegate, UITab let creationTimeDescriptor = NSSortDescriptor(key: "creationTime", ascending: true) fetchRequest.sortDescriptors = [creationTimeDescriptor] - let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "DownloadFRC" + Bundle.buildVersion) - fetchedResultsController.delegate = self - fetchedResultsController.performFetch(deleteCache: false) - return fetchedResultsController as! NSFetchedResultsController + let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "DownloadFRC" + Bundle.buildVersion) + controller.delegate = self + try? controller.performFetch() + return controller as! NSFetchedResultsController }() } diff --git a/Kiwix-iOS/Controller/Library/LocalBooksController.swift b/Kiwix-iOS/Controller/Library/LocalBooksController.swift index 009d78bd..177faf49 100644 --- a/Kiwix-iOS/Controller/Library/LocalBooksController.swift +++ b/Kiwix-iOS/Controller/Library/LocalBooksController.swift @@ -138,7 +138,7 @@ class LocalBooksController: LibraryBaseController, UITableViewDelegate, UITableV fetchRequest.predicate = NSPredicate(format: "stateRaw >= 2") let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: "stateRaw", cacheName: "LocalFRC" + Bundle.buildVersion) fetchedResultsController.delegate = self - fetchedResultsController.performFetch(deleteCache: false) + try? fetchedResultsController.performFetch() return fetchedResultsController as! NSFetchedResultsController }() diff --git a/Kiwix-iOS/Controller/Main/MainController.swift b/Kiwix-iOS/Controller/Main/MainController.swift index 8891eb9e..75dc7018 100644 --- a/Kiwix-iOS/Controller/Main/MainController.swift +++ b/Kiwix-iOS/Controller/Main/MainController.swift @@ -71,5 +71,4 @@ class MainController: UIViewController { } } - } diff --git a/Kiwix-iOS/Controller/Others/WelcomeController.swift b/Kiwix-iOS/Controller/Others/WelcomeController.swift index 0994ac61..efeedf33 100644 --- a/Kiwix-iOS/Controller/Others/WelcomeController.swift +++ b/Kiwix-iOS/Controller/Others/WelcomeController.swift @@ -9,27 +9,8 @@ import UIKit class WelcomeController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - // Do any additional setup after loading the view. - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ + // place holder for adding stuff like resume last read, suggestions in welcome screen + // maybe this class one day will become tabs controller } diff --git a/Kiwix-iOS/Controller/Search/SearchBooksController.swift b/Kiwix-iOS/Controller/Search/SearchBooksController.swift index 2e535075..ea82d789 100644 --- a/Kiwix-iOS/Controller/Search/SearchBooksController.swift +++ b/Kiwix-iOS/Controller/Search/SearchBooksController.swift @@ -36,21 +36,6 @@ class SearchBooksController: SearchBaseTableController, UITableViewDelegate, UIT recentSearchContainer.setNeedsDisplay() } - // MARK: - Fetched Results Controller - - let managedObjectContext = AppDelegate.persistentContainer.viewContext - lazy var fetchedResultController: NSFetchedResultsController = { - let fetchRequest = Book.fetchRequest() - let langDescriptor = NSSortDescriptor(key: "language.name", ascending: true) - let titleDescriptor = NSSortDescriptor(key: "title", ascending: true) - fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor] - fetchRequest.predicate = NSPredicate(format: "stateRaw == 2") - let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "ScopeFRC" + Bundle.buildVersion) - fetchedResultsController.delegate = self - fetchedResultsController.performFetch(deleteCache: false) - return fetchedResultsController as! NSFetchedResultsController - }() - // MARK: - Table Cell Delegate func didTapOnAccessoryViewForCell(_ cell: UITableViewCell) { @@ -175,4 +160,19 @@ class SearchBooksController: SearchBaseTableController, UITableViewDelegate, UIT func verticalOffsetForEmptyDataSet(_ scrollView: UIScrollView!) -> CGFloat { return -(tableView.contentInset.bottom + recentSearchBarHeight.constant) / 2.5 } + + // MARK: - Fetched Results Controller + + let managedObjectContext = AppDelegate.persistentContainer.viewContext + lazy var fetchedResultController: NSFetchedResultsController = { + let fetchRequest = Book.fetchRequest() + let langDescriptor = NSSortDescriptor(key: "language.name", ascending: true) + let titleDescriptor = NSSortDescriptor(key: "title", ascending: true) + fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor] + fetchRequest.predicate = NSPredicate(format: "stateRaw == 2") + let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: "ScopeFRC" + Bundle.buildVersion) + fetchedResultsController.delegate = self + try? fetchedResultsController.performFetch() + return fetchedResultsController as! NSFetchedResultsController + }() } diff --git a/Kiwix-iOS/Controller/Setting/SettingController.swift b/Kiwix-iOS/Controller/Setting/SettingController.swift index e4cafd33..545f53c0 100644 --- a/Kiwix-iOS/Controller/Setting/SettingController.swift +++ b/Kiwix-iOS/Controller/Setting/SettingController.swift @@ -104,10 +104,11 @@ class SettingTBVC: UITableViewController { case LocalizedStrings.rateKiwix: showRateKiwixAlert(showRemindLater: false) case LocalizedStrings.about: - let controller = UIStoryboard(name: "Setting", bundle: nil) - .instantiateViewController(withIdentifier: "WebViewControllerOld") as! WebViewControllerOld - controller.page = .About - navigationController?.pushViewController(controller, animated: true) + break +// let controller = UIStoryboard(name: "Setting", bundle: nil) +// .instantiateViewController(withIdentifier: "WebViewControllerOld") as! WebViewControllerOld +// controller.page = .About +// navigationController?.pushViewController(controller, animated: true) default: break } @@ -152,8 +153,8 @@ class SettingTBVC: UITableViewController { } func goRateInAppStore() { - let url = URL(string: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=997079563&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8")! - UIApplication.shared.openURL(url) +// let url = URL(string: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=997079563&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8")! +// UIApplication.shared.openURL(url) } // MARK: - Actions diff --git a/Kiwix-iOS/Controller/Setting/WebViewControllerOld.swift b/Kiwix-iOS/Controller/Setting/WebViewControllerOld.swift index 9c617225..0acded77 100644 --- a/Kiwix-iOS/Controller/Setting/WebViewControllerOld.swift +++ b/Kiwix-iOS/Controller/Setting/WebViewControllerOld.swift @@ -52,6 +52,7 @@ class WebViewControllerOld: UIViewController, UIWebViewDelegate { func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { if navigationType == .linkClicked { + UIApplication.shared.open(<#T##url: URL##URL#>, options: <#T##[String : Any]#>, completionHandler: <#T##((Bool) -> Void)?##((Bool) -> Void)?##(Bool) -> Void#>) UIApplication.shared.openURL(request.url!) return false } diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist index 614abc07..1a47be22 100644 --- a/Kiwix-iOS/Info.plist +++ b/Kiwix-iOS/Info.plist @@ -49,7 +49,7 @@ CFBundleVersion - 1.8.3308 + 1.8.3342 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/Kiwix-iOS/Notifications.swift b/Kiwix-iOS/Notifications.swift index d8ba76d9..0ea6816b 100644 --- a/Kiwix-iOS/Notifications.swift +++ b/Kiwix-iOS/Notifications.swift @@ -7,9 +7,3 @@ // import UIKit - -class DownloadFinishedNotifications: UILocalNotification { - -} - -//@available(iOS 10, *) diff --git a/Kiwix-iOS/Storyboard/Main.storyboard b/Kiwix-iOS/Storyboard/Main.storyboard index a945f668..7d95a03d 100644 --- a/Kiwix-iOS/Storyboard/Main.storyboard +++ b/Kiwix-iOS/Storyboard/Main.storyboard @@ -209,61 +209,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Kiwix-iOS/Storyboard/Search.storyboard b/Kiwix-iOS/Storyboard/Search.storyboard index a2efca87..3771f91e 100644 --- a/Kiwix-iOS/Storyboard/Search.storyboard +++ b/Kiwix-iOS/Storyboard/Search.storyboard @@ -1,6 +1,6 @@ - + @@ -20,18 +20,18 @@ - + - + - + - + - + @@ -160,18 +160,18 @@ - + - + - + - + @@ -189,7 +189,7 @@