diff --git a/Kiwix-iOS/Controller/Search/SearchScopeAndHistoryController.swift b/Kiwix-iOS/Controller/Search/SearchScopeAndHistoryController.swift index 6123ef84..d1976aa0 100644 --- a/Kiwix-iOS/Controller/Search/SearchScopeAndHistoryController.swift +++ b/Kiwix-iOS/Controller/Search/SearchScopeAndHistoryController.swift @@ -135,7 +135,7 @@ class SearchScopeAndHistoryController: SearchBaseTableController, UITableViewDel 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) + let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) fetchedResultsController.delegate = self try? fetchedResultsController.performFetch() return fetchedResultsController as! NSFetchedResultsController diff --git a/Kiwix/Operations/ScanLocalBook.swift b/Kiwix/Operations/ScanLocalBook.swift index 75d9d7b8..c26367a0 100644 --- a/Kiwix/Operations/ScanLocalBook.swift +++ b/Kiwix/Operations/ScanLocalBook.swift @@ -14,11 +14,13 @@ class ScanLocalBookOperation: Procedure { private(set) var firstBookAdded = false private(set) var shouldMigrateBookmarks = false - private(set) var snapshot: URLSnapShot + private(set) var oldSnapshot: URLSnapShot + private(set) var newSnapshot: URLSnapShot private let time = Date() - init(urlSnapshot: URLSnapShot) { - self.snapshot = urlSnapshot + init(snapshot: URLSnapShot) { + self.oldSnapshot = snapshot + self.newSnapshot = snapshot self.context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) context.parent = AppDelegate.persistentContainer.viewContext context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy @@ -31,16 +33,16 @@ class ScanLocalBookOperation: Procedure { override func execute() { defer { finish() } + newSnapshot = URLSnapShot() if ZimMultiReader.shared.readers.count == 0 { // when ZimMultiReader has not reader, only perform addition - // i.e., when app is launched initialize all zim readers - updateReaders(addition: snapshot.zimFile) + // i.e., when app is launched initialize all zim readers, or when first book is added + updateReaders(addition: newSnapshot.zimFile) context.performAndWait {self.updateCoreData()} } else { - let newSnapshot = URLSnapShot() - var addition = newSnapshot - snapshot - let deletion = snapshot - newSnapshot - snapshot = newSnapshot + + var addition = newSnapshot - oldSnapshot + let deletion = oldSnapshot - newSnapshot if deletion.indexFolders.count > 0 { addition.zimFiles = newSnapshot.zimFile } diff --git a/Kiwix/ZimMultiReader/ZimMultiReader.swift b/Kiwix/ZimMultiReader/ZimMultiReader.swift index 8c94e572..7a558d6e 100644 --- a/Kiwix/ZimMultiReader/ZimMultiReader.swift +++ b/Kiwix/ZimMultiReader/ZimMultiReader.swift @@ -32,11 +32,11 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate { } func startScan() { - let operation = ScanLocalBookOperation(urlSnapshot: urlSnapShot) + let operation = ScanLocalBookOperation(snapshot: urlSnapShot) operation.add(observer: DidFinishObserver{ (operation, errors) in guard let operation = operation as? ScanLocalBookOperation else {return} OperationQueue.main.addOperation({ - self.urlSnapShot = operation.snapshot + self.urlSnapShot = operation.newSnapshot guard operation.firstBookAdded else {return} self.delegate?.firstBookAdded() })