marinofaggiana 4 years ago
parent
commit
bab99463c1

+ 4 - 7
File Provider Extension/FileProviderEnumerator.swift

@@ -241,12 +241,10 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
                     
                     if errorCode == 0 && files != nil {
                         
-                        // Metadata conversion
-                        var metadataFolder = tableMetadata()
-                        let metadatas = NCNetworking.sharedInstance.convertFilesToMetadatas(files!, metadataFolder: &metadataFolder)
-                        
+                       let fileFolder = files![0]
+                                                
                         // Add directory
-                        NCManageDatabase.sharedInstance.addDirectory(encrypted: metadataFolder.e2eEncrypted, favorite: metadataFolder.favorite, ocId: metadataFolder.ocId, fileId: metadataFolder.fileId, etag: metadataFolder.etag, permissions: metadataFolder.permissions, serverUrl: serverUrl, richWorkspace: metadataFolder.richWorkspace, account: account)
+                        NCManageDatabase.sharedInstance.addDirectory(encrypted: fileFolder.e2eEncrypted, favorite: fileFolder.favorite, ocId: fileFolder.ocId, fileId: fileFolder.fileId, etag: fileFolder.etag, permissions: fileFolder.permissions, serverUrl: serverUrl, richWorkspace: fileFolder.richWorkspace, account: account)
                         
                         // Save status transfer metadata
                         let metadatasInDownload = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND (status == %d OR status == %d OR status == %d OR status == %d)", account, serverUrl, k_metadataStatusWaitDownload, k_metadataStatusInDownload, k_metadataStatusDownloading, k_metadataStatusDownloadError), sorted: nil, ascending: false)
@@ -257,8 +255,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
                         NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", account, serverUrl, k_metadataStatusNormal))
 
                         // Add metadata
-                        NCManageDatabase.sharedInstance.addMetadata(metadataFolder)
-                        NCManageDatabase.sharedInstance.addMetadatas(metadatas)
+                        NCManageDatabase.sharedInstance.addMetadatas(files: files, account: account)
                          
                         if metadatasInDownload != nil {
                             NCManageDatabase.sharedInstance.addMetadatas(metadatasInDownload!)

+ 46 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -1951,6 +1951,52 @@ class NCManageDatabase: NSObject {
         return Array(metadatas.map { tableMetadata.init(value:$0) })
     }
 
+    @objc func addMetadatas(files: [NCFile]?, account: String) {
+    
+        guard let files = files else { return }
+        
+        let realm = try! Realm()
+        
+        do {
+            try realm.write {
+                for file in files {
+                    
+                    let metadata = tableMetadata()
+                    
+                    metadata.account = account
+                    metadata.commentsUnread = file.commentsUnread
+                    metadata.contentType = file.contentType
+                    metadata.date = file.date
+                    metadata.directory = file.directory
+                    metadata.e2eEncrypted = file.e2eEncrypted
+                    metadata.etag = file.etag
+                    metadata.favorite = file.favorite
+                    metadata.fileId = file.fileId
+                    metadata.fileName = file.fileName
+                    metadata.fileNameView = file.fileName
+                    metadata.hasPreview = file.hasPreview
+                    metadata.iconName = file.iconName
+                    metadata.mountType = file.mountType
+                    metadata.ocId = file.ocId
+                    metadata.ownerId = file.ownerId
+                    metadata.ownerDisplayName = file.ownerDisplayName
+                    metadata.permissions = file.permissions
+                    metadata.quotaUsedBytes = file.quotaUsedBytes
+                    metadata.quotaAvailableBytes = file.quotaAvailableBytes
+                    metadata.resourceType = file.resourceType
+                    metadata.serverUrl = file.serverUrl
+                    metadata.size = file.size
+                    metadata.typeFile = file.typeFile
+                    
+                    realm.add(metadata, update: .all)
+                }
+            }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            return
+        }        
+    }
+    
     @objc func deleteMetadata(predicate: NSPredicate) {
         
         var directoryToClearDate = [String:String]()