Quellcode durchsuchen

groupfolder move to async

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana vor 1 Jahr
Ursprung
Commit
341f33033f
1 geänderte Dateien mit 41 neuen und 69 gelöschten Zeilen
  1. 41 69
      iOSClient/Groupfolders/NCGroupfolders.swift

+ 41 - 69
iOSClient/Groupfolders/NCGroupfolders.swift

@@ -46,29 +46,6 @@ class NCGroupfolders: NCCollectionViewCommon {
         super.viewWillAppear(animated)
 
         navigationController?.setFileAppreance()
-
-        NotificationCenter.default.addObserver(self, selector: #selector(readFile(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterOperationReadFile), object: nil)
-    }
-
-    override func viewWillDisappear(_ animated: Bool) {
-        super.viewWillDisappear(animated)
-
-        NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterOperationReadFile), object: nil)
-    }
-
-    // MARK: - NotificationCenter
-
-    @objc func readFile(_ notification: NSNotification) {
-
-        guard let userInfo = notification.userInfo as NSDictionary?,
-              let ocId = userInfo["ocId"] as? String,
-              let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocId)
-        else {
-            return
-        }
-
-        dataSource.addMetadata(metadata)
-        self.collectionView?.reloadData()
     }
 
     // MARK: - DataSource + NC Endpoint
@@ -76,32 +53,30 @@ class NCGroupfolders: NCCollectionViewCommon {
     override func reloadDataSource(forced: Bool = true) {
         super.reloadDataSource()
 
-        DispatchQueue.global().async {
+        var metadatas: [tableMetadata] = []
 
-            var metadatas: [tableMetadata] = []
-
-            if self.serverUrl.isEmpty {
-                metadatas = NCManageDatabase.shared.getMetadatasFromGroupfolders(account: self.appDelegate.account, urlBase: self.appDelegate.urlBase, userId: self.appDelegate.userId)
-            } else {
-                metadatas = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.account, self.serverUrl))
-            }
+        if self.serverUrl.isEmpty {
+            metadatas = NCManageDatabase.shared.getMetadatasFromGroupfolders(account: self.appDelegate.account, urlBase: self.appDelegate.urlBase, userId: self.appDelegate.userId)
+        } else {
+            metadatas = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.account, self.serverUrl))
+        }
 
-            self.dataSource = NCDataSource(
-                metadatas: metadatas,
-                account: self.appDelegate.account,
-                sort: self.layoutForView?.sort,
-                ascending: self.layoutForView?.ascending,
-                directoryOnTop: self.layoutForView?.directoryOnTop,
-                favoriteOnTop: true,
-                filterLivePhoto: true,
-                groupByField: self.groupByField,
-                providers: self.providers,
-                searchResults: self.searchResults)
-
-            DispatchQueue.main.async {
-                self.refreshControl.endRefreshing()
-                self.collectionView.reloadData()
-            }
+        self.dataSource = NCDataSource(
+            metadatas: metadatas,
+            account: self.appDelegate.account,
+            sort: self.layoutForView?.sort,
+            ascending: self.layoutForView?.ascending,
+            directoryOnTop: self.layoutForView?.directoryOnTop,
+            favoriteOnTop: true,
+            filterLivePhoto: true,
+            groupByField: self.groupByField,
+            providers: self.providers,
+            searchResults: self.searchResults)
+
+        DispatchQueue.main.async {
+            self.isReloadDataSourceNetworkInProgress = false
+            self.refreshControl.endRefreshing()
+            self.collectionView.reloadData()
         }
     }
 
@@ -118,39 +93,36 @@ class NCGroupfolders: NCCollectionViewCommon {
 
             NextcloudKit.shared.getGroupfolders(options: options) { account, results, _, error in
 
-                DispatchQueue.main.async {
-                    self.refreshControl.endRefreshing()
-                    self.isReloadDataSourceNetworkInProgress = false
-                }
-
                 if error == .success, let groupfolders = results {
+
                     NCManageDatabase.shared.addGroupfolders(account: account, groupfolders: groupfolders)
-                    for groupfolder in groupfolders {
-                        let mountPoint = groupfolder.mountPoint.hasPrefix("/") ? groupfolder.mountPoint : "/" + groupfolder.mountPoint
-                        let serverUrlFileName = homeServerUrl + mountPoint
-                        if NCManageDatabase.shared.getMetadataFromDirectory(account: self.appDelegate.account, serverUrl: serverUrlFileName) == nil {
-                            NCOperationQueue.shared.readFile(serverUrlFileName: serverUrlFileName)
+
+                    Task {
+                        for groupfolder in groupfolders {
+                            let mountPoint = groupfolder.mountPoint.hasPrefix("/") ? groupfolder.mountPoint : "/" + groupfolder.mountPoint
+                            let serverUrlFileName = homeServerUrl + mountPoint
+                            if NCManageDatabase.shared.getMetadataFromDirectory(account: self.appDelegate.account, serverUrl: serverUrlFileName) == nil {
+                                let results = await NextcloudKit.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles())
+                                if results.error == .success, let file = results.files.first {
+                                    let isDirectoryE2EE = NCUtility.shared.isDirectoryE2EE(file: file)
+                                    let metadata = NCManageDatabase.shared.convertFileToMetadata(file, isDirectoryE2EE: isDirectoryE2EE)
+                                    NCManageDatabase.shared.addMetadata(metadata)
+                                    NCManageDatabase.shared.addDirectory(encrypted: isDirectoryE2EE, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrlFileName, account: metadata.account)
+                                }
+                            }
                         }
+                        self.reloadDataSource()
                     }
                 } else if error != .success {
+                    self.reloadDataSource()
                     NCContentPresenter.shared.showError(error: error)
                 }
-                self.reloadDataSource()
             }
         } else {
 
-            networkReadFolder(forced: forced) { _, _, metadatasUpdate, metadatasDelete, _ in
-
-                DispatchQueue.main.async {
-                    self.refreshControl.endRefreshing()
-                    self.isReloadDataSourceNetworkInProgress = false
+            networkReadFolder(forced: forced) { _, _, _, _, _ in
 
-                    if !(metadatasUpdate?.isEmpty ?? true) || !(metadatasDelete?.isEmpty ?? true) || forced {
-                        self.reloadDataSource()
-                    } else {
-                        self.collectionView?.reloadData()
-                    }
-                }
+                self.reloadDataSource()
             }
         }
     }