Marino Faggiana 6 tahun lalu
induk
melakukan
af93e0cc51

+ 3 - 3
File Provider Extension/FileProviderEnumerator.swift

@@ -163,13 +163,13 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
                             
                             NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "directoryID == %@ AND (status == %d OR status == %d)", directoryID!, k_metadataStatusNormal, k_metadataStatusHide))
                             
-                            NCManageDatabase.sharedInstance.setDateReadDirectory(directoryID: directoryID!)
+                            NCManageDatabase.sharedInstance.setDateReadDirectory(serverUrl: serverUrl, account: self.providerData.account) 
 
                             let metadatasInDownload = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "directoryID == %@ AND (status == %d OR status == %d OR status == %d OR status == %d)", directoryID!, k_metadataStatusWaitDownload, k_metadataStatusInDownload, k_metadataStatusDownloading, k_metadataStatusDownloadError), sorted: nil, ascending: false)
                             
-                            _ = NCManageDatabase.sharedInstance.addMetadatas(metadatas as! [tableMetadata], serverUrl: serverUrl)
+                            _ = NCManageDatabase.sharedInstance.addMetadatas(metadatas as! [tableMetadata])
                             if metadatasInDownload != nil {
-                                _ = NCManageDatabase.sharedInstance.addMetadatas(metadatasInDownload!, serverUrl: serverUrl)
+                                _ = NCManageDatabase.sharedInstance.addMetadatas(metadatasInDownload!)
                             }
                         }
                         

+ 1 - 1
iOSClient/AutoUpload/NCAutoUpload.m

@@ -435,7 +435,7 @@
     // Insert all assets (Full) in tableQueueUpload
     if ([selector isEqualToString:selectorUploadAutoUploadAll] && [metadataFull count] > 0) {
     
-        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadataFull serverUrl:serverUrl];
+        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadataFull];
         
         // Update icon badge number
         dispatch_async(dispatch_get_main_queue(), ^{

+ 33 - 33
iOSClient/Database/NCManageDatabase.swift

@@ -1015,13 +1015,13 @@ class NCManageDatabase: NSObject {
         return result.directoryID
     }
     
-    @objc func setDateReadDirectory(directoryID: String) {
+    @objc func setDateReadDirectory(serverUrl: String, account: String) {
         
         let realm = try! Realm()
 
         realm.beginWrite()
 
-        guard let result = realm.objects(tableDirectory.self).filter("directoryID == %@", directoryID).first else {
+        guard let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first else {
             realm.cancelWrite()
             return
         }
@@ -1589,7 +1589,8 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        let directoryID = metadata.directoryID
+        let serverUrl = metadata.serverUrl
+        let account = metadata.account
         
         let realm = try! Realm()
 
@@ -1602,7 +1603,7 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        self.setDateReadDirectory(directoryID: directoryID)
+        self.setDateReadDirectory(serverUrl: serverUrl, account: account)
         
         if metadata.isInvalidated {
             return nil
@@ -1611,17 +1612,20 @@ class NCManageDatabase: NSObject {
         return tableMetadata.init(value: metadata)
     }
     
-    @objc func addMetadatas(_ metadatas: [tableMetadata], serverUrl: String?) -> [tableMetadata]? {
+    @objc func addMetadatas(_ metadatas: [tableMetadata]) -> [tableMetadata]? {
         
         guard self.getAccountActive() != nil else {
             return nil
         }
         
+        var directoryToClearDate = [String:String]()
+
         let realm = try! Realm()
 
         do {
             try realm.write {
                 for metadata in metadatas {
+                    directoryToClearDate[metadata.serverUrl] = metadata.account
                     realm.add(metadata, update: true)
                 }
             }
@@ -1630,10 +1634,8 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        if let serverUrl = serverUrl {
-            if let directoryID = self.getDirectoryID(serverUrl) {
-                self.setDateReadDirectory(directoryID: directoryID)
-            }
+        for (serverUrl, account) in directoryToClearDate {
+            self.setDateReadDirectory(serverUrl: serverUrl, account: account)
         }
         
         return Array(metadatas.map { tableMetadata.init(value:$0) })
@@ -1645,7 +1647,7 @@ class NCManageDatabase: NSObject {
             return
         }
         
-        var directoriesID = [String]()
+        var directoryToClearDate = [String:String]()
         
         let realm = try! Realm()
 
@@ -1654,7 +1656,7 @@ class NCManageDatabase: NSObject {
         let results = realm.objects(tableMetadata.self).filter(predicate)
         
         for result in results {
-            directoriesID.append(result.directoryID)
+            directoryToClearDate[result.serverUrl] = result.account
         }
         
         realm.delete(results)
@@ -1666,8 +1668,8 @@ class NCManageDatabase: NSObject {
             return
         }
         
-        for directoryID in directoriesID {
-            self.setDateReadDirectory(directoryID: directoryID)
+        for (serverUrl, account) in directoryToClearDate {
+            self.setDateReadDirectory(serverUrl: serverUrl, account: account)
         }
     }
     
@@ -1715,13 +1717,14 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        self.setDateReadDirectory(directoryID: result!.directoryID)
+        self.setDateReadDirectory(serverUrl: result!.serverUrl, account: result!.account)
         return tableMetadata.init(value: result!)
     }
     
     @objc func updateMetadata(_ metadata: tableMetadata) -> tableMetadata? {
         
-        let directoryID = metadata.directoryID
+        let account = metadata.account
+        let serverUrl = metadata.serverUrl
         
         let realm = try! Realm()
 
@@ -1734,7 +1737,7 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        self.setDateReadDirectory(directoryID: directoryID)
+        self.setDateReadDirectory(serverUrl: serverUrl, account: account)
         
         return tableMetadata.init(value: metadata)
     }
@@ -1766,8 +1769,9 @@ class NCManageDatabase: NSObject {
         
         result.sessionTaskIdentifier = sessionTaskIdentifier
         result.status = status
-        
-        let directoryID : String? = result.directoryID
+
+        let account = result.account
+        let serverUrl = result.serverUrl
         
         do {
             try realm.commitWrite()
@@ -1776,10 +1780,8 @@ class NCManageDatabase: NSObject {
             return
         }
         
-        if let directoryID = directoryID {
-            // Update Date Read Directory
-            self.setDateReadDirectory(directoryID: directoryID)
-        }
+        // Update Date Read Directory
+        self.setDateReadDirectory(serverUrl: serverUrl, account: account)
     }
     
     @objc func setMetadataFavorite(fileID: String, favorite: Bool) {
@@ -1794,8 +1796,9 @@ class NCManageDatabase: NSObject {
         }
         
         result.favorite = favorite
-        
-        let directoryID : String? = result.directoryID
+
+        let account = result.account
+        let serverUrl = result.serverUrl
         
         do {
             try realm.commitWrite()
@@ -1804,10 +1807,8 @@ class NCManageDatabase: NSObject {
             return
         }
         
-        if let directoryID = directoryID {
-            // Update Date Read Directory
-            self.setDateReadDirectory(directoryID: directoryID)
-        }
+        // Update Date Read Directory
+        setDateReadDirectory(serverUrl: serverUrl, account: account)
     }
     
     @objc func setMetadataFileNameView(directoryID: String, fileName: String, newFileNameView: String) {
@@ -1823,7 +1824,8 @@ class NCManageDatabase: NSObject {
                 
         result.fileNameView = newFileNameView
         
-        let directoryID : String? = result.directoryID
+        let account = result.account
+        let serverUrl = result.serverUrl
     
         do {
             try realm.commitWrite()
@@ -1832,10 +1834,8 @@ class NCManageDatabase: NSObject {
             return
         }
     
-        if let directoryID = directoryID {
-            // Update Date Read Directory
-            self.setDateReadDirectory(directoryID: directoryID)
-        }
+        // Update Date Read Directory
+        setDateReadDirectory(serverUrl: serverUrl, account: account)
     }
     
     @objc func getMetadata(predicate: NSPredicate) -> tableMetadata? {

+ 3 - 3
iOSClient/Main/CCMain.m

@@ -1226,20 +1226,20 @@
         
         [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"directoryID == %@ AND (status == %d OR status == %d)", metadataNet.directoryID, k_metadataStatusNormal, k_metadataStatusHide]];
         
-        [[NCManageDatabase sharedInstance] setDateReadDirectoryWithDirectoryID:metadataNet.directoryID];
+        [[NCManageDatabase sharedInstance] setDateReadDirectoryWithServerUrl:metadataNet.serverUrl account:metadataNet.account];
     }
     
     NSArray *metadatasInDownload = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"directoryID == %@ AND (status == %d OR status == %d OR status == %d OR status == %d)", metadataNet.directoryID, k_metadataStatusWaitDownload, k_metadataStatusInDownload, k_metadataStatusDownloading, k_metadataStatusDownloadError] sorted:nil ascending:NO];
     
     // insert in Database
-    NSMutableArray *metadatasToInsertInDB = (NSMutableArray *)[[NCManageDatabase sharedInstance] addMetadatas:metadatas serverUrl:metadataNet.serverUrl];
+    NSMutableArray *metadatasToInsertInDB = (NSMutableArray *)[[NCManageDatabase sharedInstance] addMetadatas:metadatas];
     // insert in Database the /
     if (metadataFolder != nil) {
         (void)[[NCManageDatabase sharedInstance] addMetadata:metadataFolder];
     }
     // reinsert metadatas in Download
     if (metadatasInDownload) {
-        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatasInDownload serverUrl:metadataNet.serverUrl];
+        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatasInDownload];
     }
     
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{

+ 3 - 3
iOSClient/Move/CCMove.m

@@ -306,15 +306,15 @@
         // Update directory etag
         [[NCManageDatabase sharedInstance] setDirectoryWithServerUrl:_serverUrl serverUrlTo:nil etag:metadataFolder.etag fileID:metadataFolder.fileID encrypted:metadataFolder.e2eEncrypted];
         [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"directoryID == %@ AND (status == %d OR status == %d)", directoryID, k_metadataStatusNormal, k_metadataStatusHide]];
-        [[NCManageDatabase sharedInstance] setDateReadDirectoryWithDirectoryID:directoryID];
+        [[NCManageDatabase sharedInstance] setDateReadDirectoryWithServerUrl:_serverUrl account:activeAccount];
         
         NSArray *metadatasInDownload = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"directoryID == %@ AND (status == %d OR status == %d OR status == %d OR status == %d)", directoryID, k_metadataStatusWaitDownload, k_metadataStatusInDownload, k_metadataStatusDownloading, k_metadataStatusDownloadError] sorted:nil ascending:NO];
         
         // insert in Database
-        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatas serverUrl:_serverUrl];
+        (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatas];
         // reinsert metadatas in Download
         if (metadatasInDownload) {
-            (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatasInDownload serverUrl:_serverUrl];
+            (void)[[NCManageDatabase sharedInstance] addMetadatas:metadatasInDownload];
         }
         
         _loadingFolder = NO;

+ 3 - 3
iOSClient/Select/NCSelect.swift

@@ -486,13 +486,13 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
             // Update directory etag
             NCManageDatabase.sharedInstance.setDirectory(serverUrl: self.serverUrl, serverUrlTo: nil, etag: metadataFolder?.etag, fileID: metadataFolder?.fileID, encrypted: metadataFolder!.e2eEncrypted)
             NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "directoryID == %@ AND (status == %d OR status == %d)", directoryID!, k_metadataStatusNormal, k_metadataStatusHide))
-            NCManageDatabase.sharedInstance.setDateReadDirectory(directoryID: directoryID!)
+            NCManageDatabase.sharedInstance.setDateReadDirectory(serverUrl: self.serverUrl, account: self.appDelegate.activeAccount)
             
-            _ = NCManageDatabase.sharedInstance.addMetadatas(metadatas as! [tableMetadata], serverUrl: self.serverUrl)
+            _ = NCManageDatabase.sharedInstance.addMetadatas(metadatas as! [tableMetadata])
             
             if let metadatasInDownload = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "directoryID == %@ AND (status == %d OR status == %d OR status == %d OR status == %d)", directoryID!, k_metadataStatusWaitDownload, k_metadataStatusInDownload, k_metadataStatusDownloading, k_metadataStatusDownloadError), sorted: nil, ascending: false) {
                 
-                _ = NCManageDatabase.sharedInstance.addMetadatas(metadatasInDownload, serverUrl: self.serverUrl)
+                _ = NCManageDatabase.sharedInstance.addMetadatas(metadatasInDownload)
             }
             
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {

+ 2 - 2
iOSClient/Synchronize/CCSynchronize.m

@@ -217,7 +217,7 @@
         }
         
         if ([addMetadatas count] > 0)
-            (void)[[NCManageDatabase sharedInstance] addMetadatas:addMetadatas serverUrl:metadataNet.serverUrl];
+            (void)[[NCManageDatabase sharedInstance] addMetadatas:addMetadatas];
         
         if ([metadatasForVerifyChange count] > 0)
             [self verifyChangeMedatas:metadatasForVerifyChange serverUrl:metadataNet.serverUrl account:metadataNet.account withDownload:YES];
@@ -356,7 +356,7 @@
         [metadataToAdd addObject:metadata];
     }
     
-    (void)[[NCManageDatabase sharedInstance] addMetadatas:metadataToAdd serverUrl:nil];
+    (void)[[NCManageDatabase sharedInstance] addMetadatas:metadataToAdd];
     [appDelegate performSelectorOnMainThread:@selector(loadAutoDownloadUpload) withObject:nil waitUntilDone:YES];
     
     [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:nil action:k_action_NULL];