Don't compare un-persisted properties of NextcloudItemMetadataTable in isInSameRemote...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Sat, 11 Mar 2023 01:30:54 +0000 (02:30 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:27 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseTables.swift

index 496bcf087b33556fb1b7bd414b0cf630a322754c..8c858dd62e50fb43fc2171fd84b17af2270e2273 100644 (file)
@@ -155,7 +155,7 @@ class NextcloudFilesDatabaseManager : NSObject {
             if let existingMetadata = existingMetadatas.first(where: { $0.ocId == updatedMetadata.ocId }) {
 
                 if existingMetadata.status == NextcloudItemMetadataTable.Status.normal.rawValue &&
-                    !existingMetadata.isInSameRemoteState(updatedMetadata) {
+                    !existingMetadata.isInSameDatabaseStoreableRemoteState(updatedMetadata) {
 
                     returningUpdatedMetadatas.append(NextcloudItemMetadataTable(value: updatedMetadata))
                     databaseToWriteTo.add(updatedMetadata, update: .all)
@@ -169,7 +169,9 @@ class NextcloudFilesDatabaseManager : NSObject {
                           , updatedMetadata.ocId, updatedMetadata.fileName, updatedMetadata.etag)
                 } else {
                     NSLog("""
-                              Skipping metadata update as received metadata status is same as existing:
+                              Skipping metadata update as received metadata status is same as existing,
+                              or metadata is currently being downloaded/uploaded:
+
                               ocID: %@,
                               fileName: %@,
                               etag: %@
index 3faeae1e68557df38403c3c05d9642fd982a5cac..59d759d0b07473cfeed32198dafacb816c6937b9 100644 (file)
@@ -54,7 +54,7 @@ class NextcloudItemMetadataTable: Object {
         return false
     }
 
-    func isInSameRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
+    func isInSameDatabaseStoreableRemoteState(_ comparingMetadata: NextcloudItemMetadataTable) -> Bool {
         return comparingMetadata.etag == self.etag &&
             comparingMetadata.fileNameView == self.fileNameView &&
             comparingMetadata.date == self.date &&
@@ -62,8 +62,6 @@ class NextcloudItemMetadataTable: Object {
             comparingMetadata.hasPreview == self.hasPreview &&
             comparingMetadata.note == self.note &&
             comparingMetadata.lock == self.lock &&
-            comparingMetadata.shareType == self.shareType &&
-            comparingMetadata.sharePermissionsCloudMesh == self.sharePermissionsCloudMesh &&
             comparingMetadata.sharePermissionsCollaborationServices == self.sharePermissionsCollaborationServices &&
             comparingMetadata.favorite == self.favorite
     }
@@ -119,7 +117,7 @@ class NextcloudItemMetadataTable: Object {
     @Persisted var sessionSelector = ""
     @Persisted var sessionTaskIdentifier: Int = 0
     @Persisted var sharePermissionsCollaborationServices: Int = 0
-    let sharePermissionsCloudMesh = List<String>()
+    let sharePermissionsCloudMesh = List<String>() // TODO: Find a way to compare these in remote state check
     let shareType = List<Int>()
     @Persisted var size: Int64 = 0
     @Persisted var status: Int = 0