Marino Faggiana 6 years ago
parent
commit
f0c64efae0

+ 10 - 0
PickerFileProvider/FileProviderData.swift

@@ -53,6 +53,10 @@ class FileProviderData: NSObject {
             return false
         }
         
+        if account != "" && account != activeAccount.account {
+            assert(false, "change user")
+        }
+        
         account = activeAccount.account
         accountUser = activeAccount.user
         accountUserID = activeAccount.userID
@@ -64,6 +68,12 @@ class FileProviderData: NSObject {
         return true
     }
     
+    func getAccountFromItemIdentifier(_ itemIdentifier: NSFileProviderItemIdentifier) -> String? {
+        
+        let fileID = itemIdentifier.rawValue
+        return NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))?.account
+    }
+    
     func getTableMetadataFromItemIdentifier(_ itemIdentifier: NSFileProviderItemIdentifier) -> tableMetadata? {
         
         let fileID = itemIdentifier.rawValue

+ 9 - 3
PickerFileProvider/FileProviderEnumerator.swift

@@ -186,14 +186,20 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
         for (itemIdentifier, _) in fileProviderSignalDeleteItemIdentifier {
             itemsDelete.append(itemIdentifier)
         }
-        observer.didDeleteItems(withIdentifiers: itemsDelete)
         
         // Report the updated items since last signal
         //
         var itemsUpdate = [FileProviderItem]()
-        for (_, item) in fileProviderSignalUpdateItem {
-            itemsUpdate.append(item)
+        for (itemIdentifier, item) in fileProviderSignalUpdateItem {
+            let account = providerData.getAccountFromItemIdentifier(itemIdentifier)
+            if account != nil && account == providerData.account {
+                itemsUpdate.append(item)
+            } else {
+                itemsDelete.append(itemIdentifier)
+            }
         }
+        
+        observer.didDeleteItems(withIdentifiers: itemsDelete)
         observer.didUpdate(itemsUpdate)
         
         let data = "\(currentAnchor)".data(using: .utf8)