Browse Source

Build 7 - Improvements DB Photos

Marino Faggiana 6 years ago
parent
commit
302418d3f1

+ 1 - 1
File Provider ExtensionUI/Info.plist

@@ -19,7 +19,7 @@
 	<key>CFBundleShortVersionString</key>
 	<string>2.22.0</string>
 	<key>CFBundleVersion</key>
-	<string>6</string>
+	<string>7</string>
 	<key>NSExtension</key>
 	<dict>
 		<key>NSExtensionFileProviderActions</key>

+ 1 - 1
iOSClient/Brand/File_Provider_Extension.plist

@@ -19,7 +19,7 @@
 	<key>CFBundleShortVersionString</key>
 	<string>2.22.0</string>
 	<key>CFBundleVersion</key>
-	<string>6</string>
+	<string>7</string>
 	<key>NSExtension</key>
 	<dict>
 		<key>NSExtensionFileProviderDocumentGroup</key>

+ 1 - 1
iOSClient/Brand/Share.plist

@@ -19,7 +19,7 @@
 	<key>CFBundleShortVersionString</key>
 	<string>2.22.0</string>
 	<key>CFBundleVersion</key>
-	<string>6</string>
+	<string>7</string>
 	<key>NSAppTransportSecurity</key>
 	<dict>
 		<key>NSAllowsArbitraryLoads</key>

+ 1 - 1
iOSClient/Brand/iOSClient.plist

@@ -69,7 +69,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>6</string>
+	<string>7</string>
 	<key>FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED</key>
 	<true/>
 	<key>Fabric</key>

+ 45 - 14
iOSClient/Database/NCManageDatabase.swift

@@ -1907,6 +1907,29 @@ class NCManageDatabase: NSObject {
         return self.getMetadatas(predicate: predicate, sorted: nil, ascending: false)
     }
     
+    @objc func getTableMetadatasDirectoryFavoriteIdentifierRank() -> [String:NSNumber] {
+        
+        var listIdentifierRank = [String:NSNumber]()
+
+        guard let tableAccount = self.getAccountActive() else {
+            return listIdentifierRank
+        }
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        var counter = 10 as Int64
+        
+        let results = realm.objects(tableMetadata.self).filter("account = %@ AND directory = true AND favorite = true", tableAccount.account).sorted(byKeyPath: "fileNameView", ascending: true)
+        
+        for result in results {
+            counter += 1
+            listIdentifierRank[result.fileID] = NSNumber(value: Int64(counter))
+        }
+        
+        return listIdentifierRank
+    }
+    
     @objc func getTableMetadatasContentTypeImageVideo(_ startDirectory: String) -> [tableMetadata]? {
         
         guard let tableAccount = self.getAccountActive() else {
@@ -1918,34 +1941,41 @@ class NCManageDatabase: NSObject {
         
         let directories = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND e2eEncrypted == 0 AND serverUrl BEGINSWITH %@", tableAccount.account, startDirectory)).sorted(byKeyPath: "serverUrl", ascending: true)
         let directoriesID = Array(directories.map { $0.directoryID })
-        let metadatas = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID)).sorted(byKeyPath: "date", ascending: false)
-            
+        let metadatas = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status == %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal)).sorted(byKeyPath: "date", ascending: false)
+        
         return Array(metadatas.map { tableMetadata.init(value:$0) })
     }
     
-    @objc func getTableMetadatasDirectoryFavoriteIdentifierRank() -> [String:NSNumber] {
-        
-        var listIdentifierRank = [String:NSNumber]()
+    @objc func updateTableMetadatasContentTypeImageVideo(_ metadatas: [tableMetadata], startDirectory: String) -> Bool {
 
         guard let tableAccount = self.getAccountActive() else {
-            return listIdentifierRank
+            return false
         }
         
         let realm = try! Realm()
         realm.refresh()
         
-        var counter = 10 as Int64
-        
-        let results = realm.objects(tableMetadata.self).filter("account = %@ AND directory = true AND favorite = true", tableAccount.account).sorted(byKeyPath: "fileNameView", ascending: true)
-        
-        for result in results {
-            counter += 1
-            listIdentifierRank[result.fileID] = NSNumber(value: Int64(counter))
+        let directories = realm.objects(tableDirectory.self).filter(NSPredicate(format: "account == %@ AND e2eEncrypted == 0 AND serverUrl BEGINSWITH %@", tableAccount.account, startDirectory)).sorted(byKeyPath: "serverUrl", ascending: true)
+        let directoriesID = Array(directories.map { $0.directoryID })
+        let resultsDelete = realm.objects(tableMetadata.self).filter(NSPredicate(format: "account == %@ AND (typeFile == %@ OR typeFile == %@) AND directoryID IN %@ AND status == %d", tableAccount.account, k_metadataTypeFile_image, k_metadataTypeFile_video, directoriesID, k_metadataStatusNormal))
+    
+        do {
+            try realm.write {
+                // DELETE
+                realm.delete(resultsDelete)
+                // INSERT
+                realm.add(metadatas, update: false)
+            }
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            realm.cancelWrite()
+            return false
         }
         
-        return listIdentifierRank
+        return true
     }
     
+    /*
     @objc func updateTableMetadatasContentTypeImageVideo(_ metadatas: [tableMetadata], startDirectory: String, activeUrl: String) -> Bool {
         
         let realm = try! Realm()
@@ -1991,6 +2021,7 @@ class NCManageDatabase: NSObject {
         }
         return false
     }
+    */
     
     @objc func clearMetadatasDownload() {
         

+ 1 - 1
iOSClient/Photos/CCPhotos.m

@@ -635,7 +635,7 @@
             
             NSString *startDirectory = [[NCManageDatabase sharedInstance] getAccountStartDirectoryPhotosTab:[CCUtility getHomeServerUrlActiveUrl:appDelegate.activeUrl]];
 
-            (void)[[NCManageDatabase sharedInstance] updateTableMetadatasContentTypeImageVideo:metadatas startDirectory:startDirectory activeUrl:appDelegate.activeUrl];
+            (void)[[NCManageDatabase sharedInstance] updateTableMetadatasContentTypeImageVideo:metadatas startDirectory:startDirectory];
             
             dispatch_async(dispatch_get_main_queue(), ^{
                 [self reloadDatasourceFromSearch:YES];