Prechádzať zdrojové kódy

new updateFavoriteForWorkingSet

Marino Faggiana 6 rokov pred
rodič
commit
2e76e35dbf

+ 33 - 9
PickerFileProvider/FileProviderData.swift

@@ -196,18 +196,19 @@ class FileProviderData: NSObject {
     
     // MARK: -
     
-    func updateFavoriteForWorkingSet() -> Bool {
+    func updateFavoriteForWorkingSet() {
         
         /* ONLY iOS 11*/
-        guard #available(iOS 11, *) else { return false }
+        guard #available(iOS 11, *) else { return }
         
         var updateWorkingSet = false
-        let newFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
+        let oldListFavoriteIdentifierRank = listFavoriteIdentifierRank
+        listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
         
         // (ADD)
-        for (identifier, _) in newFavoriteIdentifierRank {
+        for (identifier, _) in listFavoriteIdentifierRank {
             
-            if !listFavoriteIdentifierRank.keys.contains(identifier) {
+            if !oldListFavoriteIdentifierRank.keys.contains(identifier) {
                 
                 guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier)) else {
                     continue
@@ -225,15 +226,15 @@ class FileProviderData: NSObject {
         }
         
         // (REMOVE)
-        for (identifier, _) in listFavoriteIdentifierRank {
+        for (identifier, _) in oldListFavoriteIdentifierRank {
             
-            if !newFavoriteIdentifierRank.keys.contains(identifier) {
+            if !listFavoriteIdentifierRank.keys.contains(identifier) {
                 
                 guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier)) else {
                     continue
                 }
-                let itemIdentifier = getItemIdentifier(metadata: metadata)
                 
+                let itemIdentifier = getItemIdentifier(metadata: metadata)
                 queueTradeSafe.sync(flags: .barrier) {
                     fileProviderSignalDeleteWorkingSetItemIdentifier[itemIdentifier] = itemIdentifier
                 }
@@ -241,7 +242,30 @@ class FileProviderData: NSObject {
             }
         }
         
-        return updateWorkingSet
+        if updateWorkingSet {
+            signalEnumerator(for: [.workingSet])
+        }
+    }
+    
+    // MARK: -
+
+    // Convinent method to signal the enumeration for containers.
+    //
+    func signalEnumerator(for containerItemIdentifiers: [NSFileProviderItemIdentifier]) {
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else { return }
+        
+        currentAnchor += 1
+        
+        for containerItemIdentifier in containerItemIdentifiers {
+            
+            NSFileProviderManager.default.signalEnumerator(for: containerItemIdentifier) { error in
+                if let error = error {
+                    print("SignalEnumerator for \(containerItemIdentifier) returned error: \(error)")
+                }
+            }
+        }
     }
     
     // MARK: -

+ 2 - 1
PickerFileProvider/FileProviderEnumerator.swift

@@ -54,7 +54,8 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
     }
 
     func invalidate() {
-        // perform invalidation of server connection if necessary
+        // 
+        providerData.updateFavoriteForWorkingSet()
     }
 
     func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) {

+ 6 - 6
PickerFileProvider/FileProviderExtension+Actions.swift

@@ -78,7 +78,7 @@ extension FileProviderExtension {
                     self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
                 }
 
-                self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+                self.providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
 
                 completionHandler(item, nil)
                 
@@ -128,7 +128,7 @@ extension FileProviderExtension {
             providerData.fileProviderSignalDeleteWorkingSetItemIdentifier[itemIdentifier] = itemIdentifier
         }
 
-        self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
+        self.providerData.signalEnumerator(for: [parentItemIdentifier, .workingSet])
 
         completionHandler(nil)
     }
@@ -196,7 +196,7 @@ extension FileProviderExtension {
                 self.providerData.fileProviderSignalUpdateWorkingSetItem[itemIdentifier] = item
             }
 
-            self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
+            self.providerData.signalEnumerator(for: [parentItemIdentifier, .workingSet])
 
             completionHandler(item, nil)
             
@@ -269,7 +269,7 @@ extension FileProviderExtension {
                 self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
             }
 
-            self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+            self.providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
 
             completionHandler(item, nil)
             
@@ -317,7 +317,7 @@ extension FileProviderExtension {
             providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
         }
 
-        signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+        providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
 
         completionHandler(item, nil)
         
@@ -351,7 +351,7 @@ extension FileProviderExtension {
             providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
         }
         
-        signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+        providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
         
         completionHandler(item, nil)
     }

+ 4 - 4
PickerFileProvider/FileProviderExtension+Network.swift

@@ -104,7 +104,7 @@ extension FileProviderExtension {
                 self.providerData.fileProviderSignalDeleteWorkingSetItemIdentifier.removeValue(forKey: itemIdentifier)
             }
             
-            self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
+            self.providerData.signalEnumerator(for: [parentItemIdentifier, .workingSet])
         })
     }
     
@@ -170,7 +170,7 @@ extension FileProviderExtension {
                 self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
             }
             
-            self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+            self.providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
         })
     }
     
@@ -200,7 +200,7 @@ extension FileProviderExtension {
             self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
         }
         
-        self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+        self.providerData.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
     }
     
     func uploadFileSuccessFailure(_ fileName: String!, fileID: String!, assetLocalIdentifier: String!, serverUrl: String!, selector: String!, selectorPost: String!, errorMessage: String!, errorCode: Int) {
@@ -305,7 +305,7 @@ extension FileProviderExtension {
             }
         }
         
-        self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
+        self.providerData.signalEnumerator(for: [parentItemIdentifier, .workingSet])
     }
     
     func uploadFileImportDocument() {

+ 0 - 19
PickerFileProvider/FileProviderExtension.swift

@@ -127,25 +127,6 @@ class FileProviderExtension: NSFileProviderExtension, CCNetworkingDelegate {
         return enumerator
     }
     
-    // Convinent method to signal the enumeration for containers.
-    //
-    func signalEnumerator(for containerItemIdentifiers: [NSFileProviderItemIdentifier]) {
-        
-        /* ONLY iOS 11*/
-        guard #available(iOS 11, *) else { return }
-        
-        providerData.currentAnchor += 1
-
-        for containerItemIdentifier in containerItemIdentifiers {
-            
-            NSFileProviderManager.default.signalEnumerator(for: containerItemIdentifier) { error in
-                if let error = error {
-                    print("SignalEnumerator for \(containerItemIdentifier) returned error: \(error)")
-                }
-            }
-        }
-    }
-    
     // MARK: - Item
 
     override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {