marinofaggiana 4 years ago
parent
commit
87f55ee9d5
2 changed files with 34 additions and 23 deletions
  1. 16 23
      iOSClient/AutoUpload/NCAutoUpload.m
  2. 18 0
      iOSClient/Database/NCManageDatabase.swift

+ 16 - 23
iOSClient/AutoUpload/NCAutoUpload.m

@@ -459,12 +459,13 @@
                         metadataMOVForUpload.status = k_metadataStatusWaitUpload;
                         metadataMOVForUpload.typeFile = k_metadataTypeFile_video;
 
-                        [metadataFull addObject:metadataMOVForUpload];
-                                                
-                        // Update database Auto Upload
+                        if ([selector isEqualToString:selectorUploadAutoUploadAll]) {
+                            [metadataFull addObject:metadataMOVForUpload];
+                        }
+                        
                         if ([selector isEqualToString:selectorUploadAutoUpload]) {
                             [[NCCommunicationCommon shared] writeLog:[NSString stringWithFormat:@"AutoUpload Photo Library added file %@", metadataMOVForUpload.fileName]];
-                            [[NCManageDatabase sharedInstance] addMetadata:metadataMOVForUpload];
+                            [[NCManageDatabase sharedInstance] addMetadataForAutoUpload:metadataMOVForUpload];
                         }
                     }
                     
@@ -475,13 +476,19 @@
                        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:30]];
             }
             
-            [metadataFull addObject:metadataForUpload];
+            if ([selector isEqualToString:selectorUploadAutoUploadAll]) {
+                [metadataFull addObject:metadataForUpload];
+            }
                        
-            // Update database Auto Upload
             if ([selector isEqualToString:selectorUploadAutoUpload]) {
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    [self addQueueUploadAndPhotoLibrary:metadataForUpload asset:asset];
-                });
+                
+                [[NCCommunicationCommon shared] writeLog:[NSString stringWithFormat:@"AutoUpload Photo Library added file %@ with Identifier %@", metadataForUpload.fileName, metadataForUpload.assetLocalIdentifier]];
+                [[NCManageDatabase sharedInstance] addMetadataForAutoUpload:metadataForUpload];
+                
+                // Add asset in table Photo Library
+                if ([metadata.sessionSelector isEqualToString:selectorUploadAutoUpload]) {
+                    (void)[[NCManageDatabase sharedInstance] addPhotoLibrary:@[asset] account:appDelegate.account];
+                }
             }
         }
     }
@@ -498,20 +505,6 @@
     });
 }
 
-- (void)addQueueUploadAndPhotoLibrary:(tableMetadata *)metadata asset:(PHAsset *)asset
-{
-    @synchronized(self) {
-        
-        [[NCCommunicationCommon shared] writeLog:[NSString stringWithFormat:@"AutoUpload Photo Library added file %@ with Identifier %@", metadata.fileName, metadata.assetLocalIdentifier]];
-        [[NCManageDatabase sharedInstance] addMetadata:metadata];
-        
-        // Add asset in table Photo Library
-        if ([metadata.sessionSelector isEqualToString:selectorUploadAutoUpload]) {
-            (void)[[NCManageDatabase sharedInstance] addPhotoLibrary:@[asset] account:appDelegate.account];
-        }
-    }
-}
-
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== get Camera Roll new Asset ====
 #pragma --------------------------------------------------------------------------------------------

+ 18 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -1847,6 +1847,24 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func addMetadataForAutoUpload(_ metadata: tableMetadata) {
+
+        let realm = try! Realm()
+        realm.refresh()
+        
+        if realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ && serverUrl == %@ && fileName == %@ && session == %@", metadata.account, metadata.serverUrl, metadata.fileName, metadata.session)).first  != nil {
+            return
+        }
+
+        do {
+            try realm.safeWrite {
+                realm.add(metadata, update: .all)
+            }
+        } catch let error {
+            NCCommunicationCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+    
     @objc func renameMetadata(fileNameTo: String, ocId: String) {
         
         let realm = try! Realm()