Marino Faggiana 6 жил өмнө
parent
commit
7ab34bfce9

+ 31 - 14
PickerFileProvider/FileProvider.swift

@@ -150,7 +150,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             
         } else {
         
-            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue))  {
+            let fileID = identifier.rawValue
+            
+            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))  {
                 let parentItemIdentifier = getDirectoryParent(metadataDirectoryID: metadata.directoryID)
                 if parentItemIdentifier != nil {
                     let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!)
@@ -244,6 +246,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
 
             let pathComponents = url.pathComponents
             let identifier = NSFileProviderItemIdentifier(pathComponents[pathComponents.count - 2])
+            let fileID = identifier.rawValue
             var fileSize = 0 as Double
             var localEtag = ""
             var localEtagFPE = ""
@@ -254,12 +257,12 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
                 return
             }
             
-            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue)) else {
+            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID)) else {
                 completionHandler(NSFileProviderError(.noSuchItem))
                 return
             }
             
-            let tableLocalFile = NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue))
+            let tableLocalFile = NCManageDatabase.sharedInstance.getTableLocalFile(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))
             if tableLocalFile != nil {
                 localEtag = tableLocalFile!.etag
                 localEtagFPE = tableLocalFile!.etagFPE
@@ -346,8 +349,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
 
             assert(pathComponents.count > 2)
             let identifier = NSFileProviderItemIdentifier(pathComponents[pathComponents.count - 2])
+            let fileID = identifier.rawValue
             
-            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue))  else {
+            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))  else {
                 return
             }
             
@@ -467,8 +471,10 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
         var counterProgress: Int64 = 0
             
         for itemIdentifier in itemIdentifiers {
-                
-            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue))  {
+            
+            let fileID = itemIdentifier.rawValue
+            
+            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))  {
                     
                 if (metadata.typeFile == k_metadataTypeFile_image || metadata.typeFile == k_metadataTypeFile_video) {
                         
@@ -537,7 +543,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             
         } else {
             
-            guard let directoryParent = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, parentItemIdentifier.rawValue)) else {
+            let fileID = parentItemIdentifier.rawValue
+            
+            guard let directoryParent = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID)) else {
                 completionHandler(nil, NSFileProviderError(.noSuchItem))
                 return
             }
@@ -589,7 +597,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             return
         }
         
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
+        let fileID = itemIdentifier.rawValue
+        
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID)) else {
             completionHandler(nil)
             return
         }
@@ -645,6 +655,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             return
         }
         
+        let fileIDFrom = itemIdentifier.rawValue
+        let fileIDTo = parentItemIdentifier.rawValue
+        
         var serverUrlTo = ""
         var fileNameTo = ""
         var directoryIDTo = ""
@@ -654,7 +667,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             return
         }
         
-        guard let metadataFrom = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
+        guard let metadataFrom = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileIDFrom)) else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
             return
         }
@@ -669,7 +682,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
         if parentItemIdentifier == NSFileProviderItemIdentifier.rootContainer {
             serverUrlTo = homeServerUrl
         } else {
-            guard let metadataTo = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, parentItemIdentifier.rawValue)) else {
+            guard let metadataTo = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileIDTo)) else {
                 completionHandler(nil, NSFileProviderError(.noSuchItem))
                 return
             }
@@ -691,7 +704,7 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
                 NCManageDatabase.sharedInstance.moveMetadata(fileName: metadataFrom.fileName, directoryID: metadataFrom.directoryID, directoryIDTo: directoryIDTo)
             }
             
-            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
+            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileIDFrom)) else {
                 completionHandler(nil, NSFileProviderError(.noSuchItem))
                 return
             }
@@ -716,7 +729,9 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             return
         }
         
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
+        let fileID = itemIdentifier.rawValue
+
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID)) else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
             return
         }
@@ -843,10 +858,12 @@ class FileProvider: NSFileProviderExtension, CCNetworkingDelegate {
             return
         }
         
+        let fileID = itemIdentifier.rawValue
+
         // Add, Remove (nil)
-        NCManageDatabase.sharedInstance.addTag(itemIdentifier.rawValue, tagIOS: tagData)
+        NCManageDatabase.sharedInstance.addTag(fileID, tagIOS: tagData)
         
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue))  else {
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))  else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
             return
         }

+ 8 - 2
PickerFileProvider/FileProviderEnumerator.swift

@@ -39,7 +39,10 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             if (enumeratedItemIdentifier == .rootContainer) {
                 serverUrl = homeServerUrl
             } else {
-                if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, enumeratedItemIdentifier.rawValue))  {
+                
+                let fileID = enumeratedItemIdentifier.rawValue
+                
+                if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID))  {
                     if let directorySource = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND directoryID = %@", account, metadata.directoryID))  {
                         serverUrl = directorySource.serverUrl + "/" + metadata.fileName
                     }
@@ -165,7 +168,10 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             counter += 1
             if (counter >= start && counter <= stop) {
                 
-                createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)
+                if metadata.directory == false {
+                    createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)
+                }
+
                 let parentItemIdentifier = getDirectoryParent(metadataDirectoryID: metadata.directoryID)
                 if parentItemIdentifier != nil {
                     let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!)

+ 6 - 2
PickerFileProvider/FileProviderEnumeratorFile.swift

@@ -38,13 +38,17 @@ class FileProviderEnumeratorFile: NSObject, NSFileProviderEnumerator {
     func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) {
         
         var items: [NSFileProviderItemProtocol] = []
+        let fileID = enumeratedItemIdentifier.rawValue
         
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, enumeratedItemIdentifier.rawValue)) else {
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, fileID)) else {
             observer.finishEnumerating(upTo: nil)
             return
         }
         
-        createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)        
+        if metadata.directory == false {
+            createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)
+        }
+        
         let parentItemIdentifier = getDirectoryParent(metadataDirectoryID: metadata.directoryID)
         if parentItemIdentifier != nil {
             let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!)

+ 4 - 1
PickerFileProvider/FileProviderEnumeratorWorkingSet.swift

@@ -45,7 +45,10 @@ class FileProviderEnumeratorWorkingSet: NSObject, NSFileProviderEnumerator {
             
             if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, tag.fileID))  {
                 
-                createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)                
+                if metadata.directory == false {
+                    createFileIdentifierOnFileSystem(itemIdentifier: metadata.fileID, fileName: metadata.fileNameView)
+                }
+
                 let parentItemIdentifier = getDirectoryParent(metadataDirectoryID: metadata.directoryID)
                 if parentItemIdentifier != nil {
                     let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!)