scanning system Bug fix

This commit is contained in:
Chris Li 2017-01-17 15:50:32 -05:00
parent 89c7feefc0
commit 4f314eef8f
3 changed files with 14 additions and 12 deletions

View File

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

View File

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

View File

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