Răsfoiți Sursa

coding

Signed-off-by: marinofaggiana <ios@nextcloud.com>
marinofaggiana 2 ani în urmă
părinte
comite
c92ecd2e05

+ 2 - 2
Share/NCShareExtension+Files.swift

@@ -29,9 +29,9 @@ extension NCShareExtension {
 
         layoutForView = NCUtility.shared.getLayoutForView(key: keyLayout, serverUrl: serverUrl)
 
-        let metadatasSource = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND directory == true", activeAccount.account, serverUrl))
+        let metadatas = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND directory == true", activeAccount.account, serverUrl))
         self.dataSource = NCDataSource(
-            metadatasSource: metadatasSource,
+            metadatas: metadatas,
             sort: layoutForView?.sort,
             ascending: layoutForView?.ascending,
             directoryOnTop: layoutForView?.directoryOnTop,

+ 24 - 21
iOSClient/Data/NCDataSource.swift

@@ -41,9 +41,10 @@ class NCDataSource: NSObject {
         super.init()
     }
 
-    init(metadatasSource: [tableMetadata], sort: String? = "none", ascending: Bool? = false, directoryOnTop: Bool? = true, favoriteOnTop: Bool? = true, filterLivePhoto: Bool? = true, groupByField: String = "name") {
+    init(metadatas: [tableMetadata], sort: String? = "none", ascending: Bool? = false, directoryOnTop: Bool? = true, favoriteOnTop: Bool? = true, filterLivePhoto: Bool? = true, groupByField: String = "name") {
         super.init()
 
+        self.metadatas = metadatas
         self.sort = sort ?? "none"
         self.ascending = ascending ?? false
         self.directoryOnTop = directoryOnTop ?? true
@@ -51,26 +52,26 @@ class NCDataSource: NSObject {
         self.filterLivePhoto = filterLivePhoto ?? true
         self.groupByField = groupByField
 
-        createMetadatas(metadatasSource: metadatasSource)
+        createMetadatas()
     }
 
     // MARK: -
 
-    private func createMetadatas(metadatasSource: [tableMetadata]) {
+    @discardableResult
+    func createMetadatas() -> [tableMetadata] {
 
         var metadatasSourceSorted: [tableMetadata] = []
         var metadataFavoriteDirectory: [tableMetadata] = []
         var metadataFavoriteFile: [tableMetadata] = []
         var metadataDirectory: [tableMetadata] = []
         var metadataFile: [tableMetadata] = []
-        var sections: [String] = []
 
         /*
         Metadata order
         */
 
         if sort != "none" && sort != "" {
-            metadatasSourceSorted = metadatasSource.sorted {
+            metadatasSourceSorted = self.metadatas.sorted {
 
                 switch sort {
                 case "date":
@@ -94,7 +95,7 @@ class NCDataSource: NSObject {
                 }
             }
         } else {
-            metadatasSourceSorted = metadatasSource.sorted {
+            metadatasSourceSorted = self.metadatas.sorted {
                 (getSectionField(metadata:$0)) < (getSectionField(metadata:$1))
             }
         }
@@ -146,20 +147,22 @@ class NCDataSource: NSObject {
             }
 
             // sections
-            sections.append(getSectionField(metadata:metadata))
-        }
-
-        metadatas.removeAll()
-        metadatas += metadataFavoriteDirectory
-        metadatas += metadataFavoriteFile
-        metadatas += metadataDirectory
-        metadatas += metadataFile
-
-        for section in sections {
+            let section = getSectionField(metadata:metadata)
             if !self.sections.contains(section) {
                 self.sections.append(section)
             }
         }
+
+        self.metadatas.removeAll()
+
+        // Struct view : favorite dir -> favorite file -> directory -> files
+        // TODO: for sections, this is for 1 sections
+        self.metadatas += metadataFavoriteDirectory
+        self.metadatas += metadataFavoriteFile
+        self.metadatas += metadataDirectory
+        self.metadatas += metadataFile
+
+        return self.metadatas
     }
 
     // MARK: -
@@ -170,7 +173,7 @@ class NCDataSource: NSObject {
         var files: Int = 0
         var size: Int64 = 0
 
-        for metadata in metadatas {
+        for metadata in self.metadatas {
             if metadata.directory {
                 directories += 1
             } else {
@@ -185,7 +188,7 @@ class NCDataSource: NSObject {
     func deleteMetadata(ocId: String) -> IndexPath? {
 
         if let indexPath = self.getIndexPathMetadata(ocId: ocId) {
-            metadatas.remove(at: indexPath.row)
+            self.metadatas.remove(at: indexPath.row)
             return indexPath
         }
 
@@ -204,7 +207,7 @@ class NCDataSource: NSObject {
         }
 
         guard let indexPath = indexPath, let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId) else { return nil }
-        metadatas[indexPath.row] = metadata
+        self.metadatas[indexPath.row] = metadata
 
         if CCUtility.fileProviderStorageExists(metadata) {
             let tableLocalFile = NCManageDatabase.shared.getTableLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
@@ -233,7 +236,7 @@ class NCDataSource: NSObject {
 
         // Append & rebuild
         metadatas.append(metadata)
-        createMetadatas(metadatasSource: metadatas)
+        createMetadatas()
 
         return getIndexPathMetadata(ocId: metadata.ocId)
     }
@@ -264,7 +267,7 @@ class NCDataSource: NSObject {
     
     func numberOfItemsInSection(_ section: Int) -> Int {
 
-        if self.sections.count == 0 || metadatas.count == 0 { return 0 }
+        if self.sections.count == 0 || self.metadatas.count == 0 { return 0 }
         let sectionName = self.sections[section]
         let metadatas = self.metadatas.filter({ getSectionField(metadata: $0) == sectionName})
 

+ 1 - 1
iOSClient/Favorites/NCFavorite.swift

@@ -53,7 +53,7 @@ class NCFavorite: NCCollectionViewCommon {
         }
 
         self.dataSource = NCDataSource(
-            metadatasSource: self.metadatasSource,
+            metadatas: self.metadatasSource,
             sort: self.layoutForView?.sort,
             ascending: self.layoutForView?.ascending,
             directoryOnTop: self.layoutForView?.directoryOnTop,

+ 1 - 1
iOSClient/FileViewInFolder/NCFileViewInFolder.swift

@@ -88,7 +88,7 @@ class NCFileViewInFolder: NCCollectionViewCommon {
                 }
             }
 
-            self.dataSource = NCDataSource(metadatasSource: self.metadatasSource, sort: self.layoutForView?.sort, ascending: self.layoutForView?.ascending, directoryOnTop: self.layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
+            self.dataSource = NCDataSource(metadatas: self.metadatasSource, sort: self.layoutForView?.sort, ascending: self.layoutForView?.ascending, directoryOnTop: self.layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
 
             DispatchQueue.main.async {
 

+ 1 - 1
iOSClient/Files/NCFiles.swift

@@ -78,7 +78,7 @@ class NCFiles: NCCollectionViewCommon {
         }
 
         self.dataSource = NCDataSource(
-            metadatasSource: self.metadatasSource,
+            metadatas: self.metadatasSource,
             sort: self.layoutForView?.sort,
             ascending: self.layoutForView?.ascending,
             directoryOnTop: self.layoutForView?.directoryOnTop,

+ 14 - 2
iOSClient/Main/Collection Common/NCCollectionViewCommon.swift

@@ -959,9 +959,21 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
             NCNetworking.shared.unifiedSearchFiles(urlBase: appDelegate, literal: literalSearch, update: { metadatas in
                 DispatchQueue.main.async {
                     // update
+                    /*
+                    var indexPaths: [IndexPath] = []
                     guard let metadatas = metadatas else { return }
-                    //self.metadatasSource = Array(metadatas)
-                    //self.reloadDataSource()
+                    for metadata in metadatas {
+                        if let indexPath = self.dataSource.addMetadata(metadata, withCreateMetadatas: false) {
+                            indexPaths.append(indexPath)
+                        }
+                    }
+                    self.metadatasSource = self.dataSource.createMetadatas()
+                    self.collectionView?.performBatchUpdates({
+                        self.collectionView?.insertItems(at: indexPaths)
+                    }, completion: { _ in
+                        self.collectionView?.reloadData()
+                    })
+                    */
                 }
             }, completion: completionHandler)
         } else {

+ 1 - 1
iOSClient/Offline/NCOffline.swift

@@ -66,7 +66,7 @@ class NCOffline: NCCollectionViewCommon {
         }
 
         self.dataSource = NCDataSource(
-            metadatasSource: self.metadatasSource,
+            metadatas: self.metadatasSource,
             sort: self.layoutForView?.sort,
             ascending: self.layoutForView?.ascending,
             directoryOnTop: self.layoutForView?.directoryOnTop,

+ 1 - 1
iOSClient/Recent/NCRecent.swift

@@ -53,7 +53,7 @@ class NCRecent: NCCollectionViewCommon {
         DispatchQueue.global().async {
 
             self.metadatasSource = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@", self.appDelegate.account), page: 1, limit: 100, sorted: "date", ascending: false)
-            self.dataSource = NCDataSource(metadatasSource: self.metadatasSource, directoryOnTop: false, favoriteOnTop: false)
+            self.dataSource = NCDataSource(metadatas: self.metadatasSource, directoryOnTop: false, favoriteOnTop: false)
 
             DispatchQueue.main.async {
                 self.refreshControl.endRefreshing()

+ 1 - 1
iOSClient/Select/NCSelect.swift

@@ -687,7 +687,7 @@ extension NCSelect {
         }
 
         let metadatasSource = NCManageDatabase.shared.getMetadatas(predicate: predicate!)
-        self.dataSource = NCDataSource(metadatasSource: metadatasSource, sort: layoutForView?.sort, ascending: layoutForView?.ascending, directoryOnTop: layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
+        self.dataSource = NCDataSource(metadatas: metadatasSource, sort: layoutForView?.sort, ascending: layoutForView?.ascending, directoryOnTop: layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
 
         if withLoadFolder {
             loadFolder()

+ 1 - 1
iOSClient/Shares/NCShares.swift

@@ -55,7 +55,7 @@ class NCShares: NCCollectionViewCommon {
                 }
             }
 
-            self.dataSource = NCDataSource(metadatasSource: self.metadatasSource, sort: self.layoutForView?.sort, ascending: self.layoutForView?.ascending, directoryOnTop: self.layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
+            self.dataSource = NCDataSource(metadatas: self.metadatasSource, sort: self.layoutForView?.sort, ascending: self.layoutForView?.ascending, directoryOnTop: self.layoutForView?.directoryOnTop, favoriteOnTop: true, filterLivePhoto: true)
 
             DispatchQueue.main.async {
                 self.refreshControl.endRefreshing()

+ 1 - 1
iOSClient/Transfers/NCTransfers.swift

@@ -270,7 +270,7 @@ class NCTransfers: NCCollectionViewCommon, NCTransferCellDelegate {
         super.reloadDataSource()
 
         metadatasSource = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "status != %i", NCGlobal.shared.metadataStatusNormal), page: 1, limit: 100, sorted: "sessionTaskIdentifier", ascending: false)
-        self.dataSource = NCDataSource(metadatasSource: metadatasSource)
+        self.dataSource = NCDataSource(metadatas: metadatasSource)
 
         refreshControl.endRefreshing()
         collectionView.reloadData()