marinofaggiana 4 yıl önce
ebeveyn
işleme
522bd4f291

+ 1 - 1
Cartfile.resolved

@@ -19,7 +19,7 @@ github "malcommac/SwiftRichString" "3.7.2"
 github "marinofaggiana/KTVHTTPCache" "2.0.2"
 github "marinofaggiana/TOPasscodeViewController" "0.0.7"
 github "marinofaggiana/XLForm" "eb9381ad8129f60402bf412250fb31b95a628a08"
-github "nextcloud/ios-communication-library" "d1ffa16c6e6294713e1ad6eecb01a2eeee30db7b"
+github "nextcloud/ios-communication-library" "22a1ecd469131321a9c3d77b79a60bc5de393468"
 github "realm/realm-cocoa" "v5.2.0"
 github "rechsteiner/Parchment" "v1.7.0"
 github "scenee/FloatingPanel" "v1.7.5"

+ 4 - 4
File Provider Extension/FileProviderEnumerator.swift

@@ -229,8 +229,8 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             var needReadFolder = true
         
             if let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)) {
-                if errorCode == 0 && files != nil && files!.count == 1 {
-                    if tableDirectory.etag == files![0].etag {
+                if errorCode == 0 && files.count == 1 {
+                    if tableDirectory.etag == files[0].etag {
                         needReadFolder = false
                     }
                 }
@@ -240,9 +240,9 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
 
                 NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles(), completionHandler: { (account, files, responseData, errorCode, errorDescription) in
                     
-                    if errorCode == 0 && files != nil {
+                    if errorCode == 0 {
                         
-                       let fileFolder = files![0]
+                        let fileFolder = files[0]
                                                 
                         // Add directory
                         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)

+ 8 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -1996,9 +1996,11 @@ class NCManageDatabase: NSObject {
         return tableMetadata.init(value: result!)
     }
 
-    @objc func updateMetadatasServerUrl(_ serverUrl: String, account: String, metadatas: [tableMetadata]) {
+    @discardableResult
+    @objc func updateMetadatasServerUrl(_ serverUrl: String, account: String, metadatas: [tableMetadata]) -> [tableMetadata] {
         
         let realm = try! Realm()
+        var metadatasChangeEtag : [tableMetadata] = []
         
         do {
             try realm.write {
@@ -2015,6 +2017,9 @@ class NCManageDatabase: NSObject {
                     let values = results.filter { $0.ocId == metadata.ocId }
                     if values.count == 1 && values[0].status == k_metadataStatusNormal {
                         realm.add(metadata, update: .all)
+                        if values[0].etag != metadata.etag {
+                            metadatasChangeEtag.append(metadata.freeze())
+                        }
                     } else if values.count == 0 {
                         realm.add(metadata, update: .all)
                     } else {
@@ -2024,8 +2029,9 @@ class NCManageDatabase: NSObject {
             }
         } catch let error {
             print("[LOG] Could not write to database: ", error)
-            return
         }
+        
+        return metadatasChangeEtag
     }
     
     func setMetadataSession(ocId: String, session: String? = nil, sessionError: String? = nil, sessionSelector: String? = nil, sessionTaskIdentifier: Int? = nil, status: Int? = nil, etag: String? = nil, setFavorite: Bool = false) {

+ 5 - 5
iOSClient/Media/NCMedia.swift

@@ -695,8 +695,8 @@ extension NCMedia {
             self.collectionView.reloadData()
 
             if errorCode == 0 && account == self.appDelegate.activeAccount {
-                if files?.count ?? 0 > 0 {
-                    
+                if files.count > 0 {
+
                     NCManageDatabase.sharedInstance.addMetadatas(files: files, account: self.appDelegate.activeAccount)
                     self.reloadDataSource()
                     
@@ -741,7 +741,7 @@ extension NCMedia {
                 
                 self.newInProgress = false
                 
-                if errorCode == 0 && account == self.appDelegate.activeAccount && files?.count ?? 0 > 0 {
+                if errorCode == 0 && account == self.appDelegate.activeAccount && files.count > 0 {
                    DispatchQueue.global().async {
                     
                         let predicate = NSPredicate(format: "date > %@ AND date < %@", greaterDate as NSDate, lessDate as NSDate)
@@ -749,7 +749,7 @@ extension NCMedia {
                     
                         if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: newPredicate){
                             let etagsMetadatas = Array(metadatas.map { $0.etag })
-                            let etagsFiles = Array(files!.map { $0.etag })
+                            let etagsFiles = Array(files.map { $0.etag })
                             for etag in etagsFiles {
                                 if !etagsMetadatas.contains(etag) {
                                     NCManageDatabase.sharedInstance.addMetadatas(files: files, account: self.appDelegate.activeAccount)
@@ -762,7 +762,7 @@ extension NCMedia {
                             self.reloadDataSource()
                         }
                     }
-                } else if errorCode == 0 && files?.count ?? 0 == 0 && self.metadatas.count == 0 {
+                } else if errorCode == 0 && files.count == 0 && self.metadatas.count == 0 {
                     self.searchOldPhotoVideo()
                 }
             }

+ 5 - 6
iOSClient/Networking/NCNetworking.swift

@@ -575,9 +575,9 @@ import Alamofire
         
         NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
             
-            if errorCode == 0 && files != nil {
+            if errorCode == 0  {
                               
-                NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files!, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
+                NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                     
                     // 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)
@@ -627,9 +627,9 @@ import Alamofire
         
         NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
 
-            if errorCode == 0 && files != nil {
-                if files?.count ?? 0 == 1 {
-                    let file = files![0]
+            if errorCode == 0 {
+                if files.count == 1 {
+                    let file = files[0]
                     let isEncrypted = CCUtility.isFolderEncrypted(file.serverUrl, e2eEncrypted:file.e2eEncrypted, account: account)
                     let metadata = NCManageDatabase.sharedInstance.convertNCFileToMetadata(file, isEncrypted: isEncrypted, account: account)
                     completion(account, metadata, errorCode, "")
@@ -637,7 +637,6 @@ import Alamofire
                     completion(account, nil, errorCode, "")
                 }
             } else {
-
                 completion(account, nil, errorCode, errorDescription)
             }
         }

+ 21 - 22
iOSClient/Networking/NCOperationQueue.swift

@@ -177,8 +177,8 @@ class NCOperationReadFolderSync: ConcurrentOperation {
             self.finish()
         } else {
             NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
-                if errorCode == 0 && files != nil {
-                    NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files!, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
+                if errorCode == 0 {
+                    NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
                         
                         if metadatas.count > 0 {
                             CCSynchronize.shared()?.readFolder(withAccount: account, serverUrl: self.serverUrl, metadataFolder: metadataFolder, metadatas: metadatas, selector: self.selector)
@@ -309,26 +309,25 @@ class NCOperationReadFileForMediaQueue: ConcurrentOperation {
             """
             
             NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: "0", requestBody: requestBody.data(using: .utf8)) { (account, files, responseData, errorCode, errorDescription) in
-                if errorCode == 0 && files != nil {
-                    if let file = files?[0] {
-                        let metadata = tableMetadata.init(value: self.metadata)
-                        var modify = false
-                        if metadata.hasPreview != file.hasPreview {
-                            metadata.hasPreview = file.hasPreview
-                            modify = true
-                        }
-                        if file.creationDate != nil && metadata.creationDate != file.creationDate {
-                            metadata.creationDate = file.creationDate!
-                            modify = true
-                        }
-                        if file.uploadDate != nil && metadata.uploadDate != file.uploadDate {
-                            metadata.uploadDate = file.uploadDate!
-                            modify = true
-                        }
-                        if modify {
-                            NCManageDatabase.sharedInstance.addMetadata(metadata)
-                            NCOperationQueue.shared.reloadDataSourceMedia()
-                        }
+                if errorCode == 0 && files.count > 0 {
+                    let file = files[0]
+                    let metadata = tableMetadata.init(value: self.metadata)
+                    var modify = false
+                    if metadata.hasPreview != file.hasPreview {
+                        metadata.hasPreview = file.hasPreview
+                        modify = true
+                    }
+                    if file.creationDate != nil && metadata.creationDate != file.creationDate {
+                        metadata.creationDate = file.creationDate!
+                        modify = true
+                    }
+                    if file.uploadDate != nil && metadata.uploadDate != file.uploadDate {
+                        metadata.uploadDate = file.uploadDate!
+                        modify = true
+                    }
+                    if modify {
+                        NCManageDatabase.sharedInstance.addMetadata(metadata)
+                        NCOperationQueue.shared.reloadDataSourceMedia()
                     }
                 } else if errorCode == 404 {
                     NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", self.metadata.ocId))