Browse Source

dev FileProvider (improvements)

Marino Faggiana 7 years ago
parent
commit
84575ebde9
2 changed files with 33 additions and 1 deletions
  1. 21 0
      PickerFileProvider/FileProvider.swift
  2. 12 1
      PickerFileProvider/FileProviderItem.swift

+ 21 - 0
PickerFileProvider/FileProvider.swift

@@ -43,6 +43,9 @@ var listUpdateItems = [NSFileProviderItem]()
 var listFavoriteIdentifierRank = [String:NSNumber]()
 var listFavoriteIdentifierRank = [String:NSNumber]()
 var fileNamePathImport = [String]()
 var fileNamePathImport = [String]()
 
 
+// Archor for Enumerator
+var currentArchor: UInt64 = 0
+
 // Metadata Temp for Import
 // Metadata Temp for Import
 let FILEID_IMPORT_METADATA_TEMP = k_uploadSessionID + "FILE_PROVIDER_EXTENSION"
 let FILEID_IMPORT_METADATA_TEMP = k_uploadSessionID + "FILE_PROVIDER_EXTENSION"
 
 
@@ -1062,6 +1065,24 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
     //  MARK: - User Function
     //  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) {
     func refreshEnumerator(identifier: NSFileProviderItemIdentifier, serverUrl: String) {
         
         
         /* ONLY iOS 11*/
         /* ONLY iOS 11*/

+ 12 - 1
PickerFileProvider/FileProviderItem.swift

@@ -23,6 +23,17 @@
 
 
 import FileProvider
 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 {
 class FileProviderItem: NSObject, NSFileProviderItem {
 
 
     // Providing Required Properties
     // Providing Required Properties
@@ -65,10 +76,10 @@ class FileProviderItem: NSObject, NSFileProviderItem {
     var downloadingError: Error?                                    // An error that occurred while downloading the item
     var downloadingError: Error?                                    // An error that occurred while downloading the item
 
 
     var tagData: Data?                                              // Tag
     var tagData: Data?                                              // Tag
-    
     var favoriteRank: NSNumber?                                     // Favorite
     var favoriteRank: NSNumber?                                     // Favorite
     
     
     var isDirectory = false
     var isDirectory = false
+    var unenumChanges: UnenumChanges = []
 
 
     init(metadata: tableMetadata, parentItemIdentifier: NSFileProviderItemIdentifier) {
     init(metadata: tableMetadata, parentItemIdentifier: NSFileProviderItemIdentifier) {