Explorar o código

dev FileProvider (improvements)

Marino Faggiana %!s(int64=7) %!d(string=hai) anos
pai
achega
84575ebde9

+ 21 - 0
PickerFileProvider/FileProvider.swift

@@ -43,6 +43,9 @@ var listUpdateItems = [NSFileProviderItem]()
 var listFavoriteIdentifierRank = [String:NSNumber]()
 var fileNamePathImport = [String]()
 
+// Archor for Enumerator
+var currentArchor: UInt64 = 0
+
 // Metadata Temp for Import
 let FILEID_IMPORT_METADATA_TEMP = k_uploadSessionID + "FILE_PROVIDER_EXTENSION"
 
@@ -1062,6 +1065,24 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
     //  MARK: - User Function
     // --------------------------------------------------------------------------------------------
     
+    // Convinent method to signal the enumeration for containers.
+    //
+    func signalEnumerator(for containerItemIdentifiers: [NSFileProviderItemIdentifier]) {
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else {
+            return
+        }
+        
+        for containerItemIdentifier in containerItemIdentifiers {
+            NSFileProviderManager.default.signalEnumerator(for: containerItemIdentifier) { error in
+                if let error = error {
+                    print("SignalEnumerator for \(containerItemIdentifier) returned error: \(error)")
+                }
+            }
+        }
+    }
+    
     func refreshEnumerator(identifier: NSFileProviderItemIdentifier, serverUrl: String) {
         
         /* ONLY iOS 11*/

+ 12 - 1
PickerFileProvider/FileProviderItem.swift

@@ -23,6 +23,17 @@
 
 import FileProvider
 
+// Unenumerated changes. Record the changes that have not be enumerated
+//
+struct UnenumChanges: OptionSet, Codable {
+    let rawValue: Int
+    
+    static let containerUpdate = UnenumChanges(rawValue: 1 << 0)
+    static let containerDelete = UnenumChanges(rawValue: 1 << 1)
+    static let workingSetUpdate = UnenumChanges(rawValue: 1 << 2)
+    static let workingSetDelete = UnenumChanges(rawValue: 1 << 3)
+}
+
 class FileProviderItem: NSObject, NSFileProviderItem {
 
     // Providing Required Properties
@@ -65,10 +76,10 @@ class FileProviderItem: NSObject, NSFileProviderItem {
     var downloadingError: Error?                                    // An error that occurred while downloading the item
 
     var tagData: Data?                                              // Tag
-    
     var favoriteRank: NSNumber?                                     // Favorite
     
     var isDirectory = false
+    var unenumChanges: UnenumChanges = []
 
     init(metadata: tableMetadata, parentItemIdentifier: NSFileProviderItemIdentifier) {