Marino Faggiana 6 years ago
parent
commit
fdd59e956d

+ 54 - 0
PickerFileProvider/FileProviderData.swift

@@ -111,6 +111,8 @@ class FileProviderData: NSObject {
         return true
     }
     
+    // MARK: -
+    
     func getAccountFromItemIdentifier(_ itemIdentifier: NSFileProviderItemIdentifier) -> String? {
         
         let fileID = itemIdentifier.rawValue
@@ -192,6 +194,58 @@ class FileProviderData: NSObject {
         return directory
     }
     
+    // MARK: -
+    
+    func updateFavoriteForWorkingSet() -> Bool {
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else { return false }
+        
+        var updateWorkingSet = false
+        let newFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
+        
+        // (ADD)
+        for (identifier, _) in newFavoriteIdentifierRank {
+            
+            if !listFavoriteIdentifierRank.keys.contains(identifier) {
+                
+                guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier)) else {
+                    continue
+                }
+                guard let parentItemIdentifier = getParentItemIdentifier(metadata: metadata) else {
+                    continue
+                }
+                
+                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: self)
+                queueTradeSafe.sync(flags: .barrier) {
+                    fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
+                }
+                updateWorkingSet = true
+            }
+        }
+        
+        // (REMOVE)
+        for (identifier, _) in listFavoriteIdentifierRank {
+            
+            if !newFavoriteIdentifierRank.keys.contains(identifier) {
+                
+                guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier)) else {
+                    continue
+                }
+                let itemIdentifier = getItemIdentifier(metadata: metadata)
+                
+                queueTradeSafe.sync(flags: .barrier) {
+                    fileProviderSignalDeleteWorkingSetItemIdentifier[itemIdentifier] = itemIdentifier
+                }
+                updateWorkingSet = true
+            }
+        }
+        
+        return updateWorkingSet
+    }
+    
+    // MARK: -
+    
     func copyFile(_ atPath: String, toPath: String) -> Error? {
         
         var errorResult: Error?

+ 0 - 53
PickerFileProvider/FileProviderExtension.swift

@@ -146,59 +146,6 @@ class FileProviderExtension: NSFileProviderExtension, CCNetworkingDelegate {
         }
     }
     
-    // MARK: - WorkingSet -> 'favorite'
-    /*
-    func updateWorkingSet() {
-        
-        /* ONLY iOS 11*/
-        guard #available(iOS 11, *) else { return }
-        
-        // ***** Favorite Files <-> Favorite Nextcloud *****
-        
-        providerData.listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
-        
-        // (ADD)
-        for (identifier, _) in providerData.listFavoriteIdentifierRank {
-            
-            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, identifier)) else {
-                continue
-            }
-            
-            guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
-                continue
-            }
-            
-            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
-            
-            providerData.queueTradeSafe.sync(flags: .barrier) {
-                providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
-            }
-        }
-        
-        // (REMOVE)
-        let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account = %@ AND directory = true AND favorite = false", providerData.account), sorted: "fileName", ascending: true)
-        if (metadatas != nil && metadatas!.count > 0) {
-            for metadata in metadatas! {
-                
-                guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
-                    continue
-                }
-                
-                let itemIdentifier = providerData.getItemIdentifier(metadata: metadata)
-                providerData.listFavoriteIdentifierRank.removeValue(forKey: itemIdentifier.rawValue)
-                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
-                
-                providerData.queueTradeSafe.sync(flags: .barrier) {
-                    providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
-                }
-            }
-        }
-        
-        // Update workingSet
-        self.signalEnumerator(for: [.workingSet])
-    }
-    */
-    
     // MARK: - Item
 
     override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {