Fix recursive directory metadata renaming order
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Sat, 18 Mar 2023 19:01:29 +0000 (20:01 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:29:57 +0000 (13:29 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Database/NextcloudFilesDatabaseManager.swift

index ee44645a4b5e376c5e1b2cf91ca763ecf4d2d223..3827e6a477dc6c03dcae7bd86d388e9b46a636cc 100644 (file)
@@ -199,6 +199,13 @@ class NextcloudFilesDatabaseManager : NSObject {
             let metadatasToAdd = Array(metadatasToUpdate.map { NextcloudItemMetadataTable(value: $0) }) +
                                  Array(metadatasToCreate.map { NextcloudItemMetadataTable(value: $0) })
 
+            for metadata in directoriesNeedingRename {
+
+                if let updatedDirectoryChildren = renameDirectoryAndPropagateToChildren(ocId: metadata.ocId, newServerUrl: metadata.serverUrl, newFileName: metadata.fileName) {
+                    metadatasToUpdate += updatedDirectoryChildren
+                }
+            }
+
             try database.write {
                 for metadata in metadatasToDelete {
                     // Can't pass copies, we need the originals from the database
@@ -211,12 +218,6 @@ class NextcloudFilesDatabaseManager : NSObject {
 
             }
 
-            for metadata in directoriesNeedingRename {
-                if let updatedDirectoryChildren = renameDirectoryAndPropagateToChildren(ocId: metadata.ocId, newServerUrl: metadata.serverUrl, newFileName: metadata.fileName) {
-                    metadatasToUpdate += updatedDirectoryChildren
-                }
-            }
-
             return (newMetadatas: metadatasToCreate, updatedMetadatas: metadatasToUpdate, deletedMetadatas: metadatasToDelete)
         } catch let error {
             Logger.ncFilesDatabase.error("Could not update any item metadatas, received error: \(error.localizedDescription, privacy: .public)")