marinofaggiana 4 年之前
父節點
當前提交
464cf2b29b

+ 4 - 4
Nextcloud.xcodeproj/project.pbxproj

@@ -819,7 +819,6 @@
 				F755E6452525946C008DAB45 /* NCCollectionCommon.swift */,
 				F755E6452525946C008DAB45 /* NCCollectionCommon.swift */,
 				F755E6442525946C008DAB45 /* NCCollectionViewCommon.swift */,
 				F755E6442525946C008DAB45 /* NCCollectionViewCommon.swift */,
 				F73F537E1E929C8500F8678D /* CCMore.swift */,
 				F73F537E1E929C8500F8678D /* CCMore.swift */,
-				F7C1EEA425053A9C00866ACC /* NCDataSource.swift */,
 				F7226EDB1EE4089300EBECB1 /* Main.storyboard */,
 				F7226EDB1EE4089300EBECB1 /* Main.storyboard */,
 				F710D1F624057C9400A6033D /* NCDetailNavigationController.swift */,
 				F710D1F624057C9400A6033D /* NCDetailNavigationController.swift */,
 				37C83A0C24532B7200618A3B /* AppDelegate+Swift.swift */,
 				37C83A0C24532B7200618A3B /* AppDelegate+Swift.swift */,
@@ -1197,15 +1196,16 @@
 			path = languages;
 			path = languages;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
-		F7BAAD951ED5A63D00B7EAD4 /* Database */ = {
+		F7BAAD951ED5A63D00B7EAD4 /* Data */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				F7C1EEA425053A9C00866ACC /* NCDataSource.swift */,
 				F7BAADB41ED5A87C00B7EAD4 /* NCDatabase.swift */,
 				F7BAADB41ED5A87C00B7EAD4 /* NCDatabase.swift */,
 				F7BAADB51ED5A87C00B7EAD4 /* NCManageDatabase.swift */,
 				F7BAADB51ED5A87C00B7EAD4 /* NCManageDatabase.swift */,
 				F73D5E46246DE09200DF6467 /* NCElementsJSON.swift */,
 				F73D5E46246DE09200DF6467 /* NCElementsJSON.swift */,
 				F7250C75251C95B4005CF12F /* NCDatabaseJSON.swift */,
 				F7250C75251C95B4005CF12F /* NCDatabaseJSON.swift */,
 			);
 			);
-			path = Database;
+			path = Data;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
 		F7BFCCBD1B68C21900548E76 /* ManageLocation+ManageAsset */ = {
 		F7BFCCBD1B68C21900548E76 /* ManageLocation+ManageAsset */ = {
@@ -1431,7 +1431,7 @@
 				F7E0E1DA22327885006B0911 /* AudioRecorder */,
 				F7E0E1DA22327885006B0911 /* AudioRecorder */,
 				F7B0C1701EE8397E0033AC24 /* AutoUpload */,
 				F7B0C1701EE8397E0033AC24 /* AutoUpload */,
 				F7AE00F6230E8191007ACF8A /* BrowserWeb */,
 				F7AE00F6230E8191007ACF8A /* BrowserWeb */,
-				F7BAAD951ED5A63D00B7EAD4 /* Database */,
+				F7BAAD951ED5A63D00B7EAD4 /* Data */,
 				F73FAEE224D2CA830090692E /* Diagnostics */,
 				F73FAEE224D2CA830090692E /* Diagnostics */,
 				F7A3214D1E9E2A070069AD1B /* Favorites */,
 				F7A3214D1E9E2A070069AD1B /* Favorites */,
 				F7725A5D251F33BB00D125E0 /* Files */,
 				F7725A5D251F33BB00D125E0 /* Files */,

+ 30 - 7
iOSClient/Main/NCDataSource.swift → iOSClient/Data/NCDataSource.swift

@@ -55,24 +55,47 @@ class NCDataSource: NSObject {
     
     
     private func createMetadatas(metadatasSource: [tableMetadata]) {
     private func createMetadatas(metadatasSource: [tableMetadata]) {
                 
                 
-        var metadatasSourceSorted: [tableMetadata] = []
         var metadataFavoriteDirectory: [tableMetadata] = []
         var metadataFavoriteDirectory: [tableMetadata] = []
         var metadataFavoriteFile: [tableMetadata] = []
         var metadataFavoriteFile: [tableMetadata] = []
         var metadataDirectory: [tableMetadata] = []
         var metadataDirectory: [tableMetadata] = []
         var metadataFile: [tableMetadata] = []
         var metadataFile: [tableMetadata] = []
         
         
-        if sort == "fileName" || sort == "fileNameView" {
-            metadatasSourceSorted = metadatasSource.sorted { (metadata1:tableMetadata, metadata2:tableMetadata) -> Bool in
+        /*
+        Metadata order
+        */
+        
+        let metadatasSourceSorted = metadatasSource.sorted { (obj1:tableMetadata, obj2:tableMetadata) -> Bool in
+            if sort == "date" {
+                if ascending {
+                    return obj1.date.compare(obj2.date as Date) == ComparisonResult.orderedAscending
+                } else {
+                    return obj1.date.compare(obj2.date as Date) == ComparisonResult.orderedDescending
+                }
+            } else if sort == "sessionTaskIdentifier" {
+                if ascending {
+                    return obj1.sessionTaskIdentifier < obj2.sessionTaskIdentifier
+                } else {
+                    return obj1.sessionTaskIdentifier > obj2.sessionTaskIdentifier
+                }
+            } else if sort == "size" {
                 if ascending {
                 if ascending {
-                    return metadata1.fileNameView.localizedStandardCompare(metadata2.fileNameView) == ComparisonResult.orderedAscending
+                    return obj1.size < obj2.size
                 } else {
                 } else {
-                    return metadata1.fileNameView.localizedStandardCompare(metadata2.fileNameView) == ComparisonResult.orderedDescending
+                    return obj1.size > obj2.size
+                }
+            } else {
+                if ascending {
+                    return obj1.fileNameView.localizedStandardCompare(obj2.fileNameView) == ComparisonResult.orderedAscending
+                } else {
+                    return obj1.fileNameView.localizedStandardCompare(obj2.fileNameView) == ComparisonResult.orderedDescending
                 }
                 }
             }
             }
-        } else {
-            metadatasSourceSorted = metadatasSource
         }
         }
         
         
+        /*
+        Initialize datasource
+        */
+        
         for metadata in metadatasSourceSorted {
         for metadata in metadatasSourceSorted {
             
             
             // skipped the root file
             // skipped the root file

+ 0 - 0
iOSClient/Database/NCDatabase.swift → iOSClient/Data/NCDatabase.swift


+ 0 - 0
iOSClient/Database/NCDatabaseJSON.swift → iOSClient/Data/NCDatabaseJSON.swift


+ 0 - 0
iOSClient/Database/NCElementsJSON.swift → iOSClient/Data/NCElementsJSON.swift


+ 10 - 0
iOSClient/Database/NCManageDatabase.swift → iOSClient/Data/NCManageDatabase.swift

@@ -2064,6 +2064,16 @@ class NCManageDatabase: NSObject {
         }
         }
     }
     }
     
     
+    func getMetadatas(predicate: NSPredicate) -> [tableMetadata] {
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        let results = realm.objects(tableMetadata.self).filter(predicate)
+
+        return Array(results.map { tableMetadata.init(value:$0) })
+    }
+    
     @objc func getMetadatas(predicate: NSPredicate, page: Int = 0, limit: Int = 0, sorted: String = "fileName", ascending: Bool = false) -> [tableMetadata] {
     @objc func getMetadatas(predicate: NSPredicate, page: Int = 0, limit: Int = 0, sorted: String = "fileName", ascending: Bool = false) -> [tableMetadata] {
         
         
         let realm = try! Realm()
         let realm = try! Realm()

+ 1 - 1
iOSClient/Files/NCFiles.swift

@@ -69,7 +69,7 @@ class NCFiles: NCCollectionViewCommon  {
         DispatchQueue.global().async {
         DispatchQueue.global().async {
                         
                         
             if !self.isSearching {
             if !self.isSearching {
-                self.metadatasSource = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.account, self.serverUrl), page: 0, limit: 0, sorted: self.sort, ascending: self.ascending)
+                self.metadatasSource = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.account, self.serverUrl))
                 if self.metadataFolder == nil {
                 if self.metadataFolder == nil {
                     self.metadataFolder = NCManageDatabase.sharedInstance.getMetadataFolder(account: self.appDelegate.account, urlBase: self.appDelegate.urlBase, serverUrl:  self.serverUrl)
                     self.metadataFolder = NCManageDatabase.sharedInstance.getMetadataFolder(account: self.appDelegate.account, urlBase: self.appDelegate.urlBase, serverUrl:  self.serverUrl)
                 }
                 }