marinofaggiana 4 жил өмнө
parent
commit
4152f97034

+ 23 - 2
iOSClient/Favorites/NCFavorite.swift

@@ -90,6 +90,7 @@ class NCFavorite: UIViewController, UIGestureRecognizerDelegate, NCListCellDeleg
         NotificationCenter.default.addObserver(self, selector: #selector(changeTheming), name: NSNotification.Name(rawValue: k_notificationCenter_changeTheming), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(deleteFile(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_deleteFile), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(reloadDataSource), name: NSNotification.Name(rawValue: k_notificationCenter_reloadDataSource), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(downloadedFile(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_downloadedFile), object: nil)
 
         changeTheming()
     }
@@ -150,6 +151,19 @@ class NCFavorite: UIViewController, UIGestureRecognizerDelegate, NCListCellDeleg
         }
     }
     
+    @objc func downloadedFile(_ notification: NSNotification) {
+        if self.view?.window == nil { return }
+        
+        if let userInfo = notification.userInfo as NSDictionary? {
+            if let metadata = userInfo["metadata"] as? tableMetadata, let errorCode = userInfo["errorCode"] as? Int {
+                if errorCode == 0 {
+                    self.dataSource?.reloadMetadata(ocId: metadata.ocId)
+                    collectionView.reloadData()
+                }
+            }
+        }
+    }
+    
     @objc func changeTheming() {
         appDelegate.changeTheming(self, tableView: nil, collectionView: collectionView, form: false)
     }
@@ -254,7 +268,6 @@ class NCFavorite: UIViewController, UIGestureRecognizerDelegate, NCListCellDeleg
         
         if let segueNavigationController = segue.destination as? UINavigationController {
             if let segueViewController = segueNavigationController.topViewController as? NCDetailViewController {
-            
                 segueViewController.metadata = metadataPush
             }
         }
@@ -330,7 +343,15 @@ extension NCFavorite: UICollectionViewDelegate {
             
         } else {
             
-            performSegue(withIdentifier: "segueDetail", sender: self)
+            if CCUtility.fileProviderStorageExists(metadataPush?.ocId, fileNameView: metadataPush?.fileNameView) {
+                performSegue(withIdentifier: "segueDetail", sender: self)
+            } else {
+                NCNetworking.shared.download(metadata: metadataPush!, selector: "") { (errorCode) in
+                    if errorCode == 0 {
+                        self.performSegue(withIdentifier: "segueDetail", sender: self)
+                    }
+                }
+            }
         }
     }
 }

+ 32 - 70
iOSClient/Main/NCDataSource.swift

@@ -118,12 +118,44 @@ import Foundation
         }
     }
         
+    func getFilesInformation() -> (directories: Int,  files: Int, size: Double) {
+
+        var directories: Int = 0
+        var files: Int = 0
+        var size: Double = 0
+
+        for metadata in metadatas {
+            if metadata.directory {
+                directories += 1
+            } else {
+                files += 1
+            }
+            size = size + metadata.size
+        }
+        
+        return (directories, files, size)
+    }
+    
     @objc func deleteMetadata(ocId: String) {
         if let index = self.getIndexMetadata(ocId: ocId) {
             metadatas.remove(at: index)
         }
     }
     
+    @objc func reloadMetadata(ocId: String) {
+        if let index = self.getIndexMetadata(ocId: ocId) {
+            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", ocId)) {
+                metadatas[index] = metadata
+            }
+        }
+    }
+    
+    @objc func addMetadata(_ metadata: tableMetadata) {
+        
+        self.metadatas.append(metadata)
+        createMetadatas(metadatasSource: metadatas)
+    }
+    
     // MARK: -
     
     private func getIndexMetadata(ocId: String) -> Int? {
@@ -156,74 +188,4 @@ import Foundation
     @objc func numberOfItemsInSection(section: Int) -> Int {
         return metadatas.count
     }
-    
-    func getFilesInformation() -> (directories: Int,  files: Int, size: Double) {
-
-        var directories: Int = 0
-        var files: Int = 0
-        var size: Double = 0
-
-        for metadata in metadatas {
-            if metadata.directory {
-                directories += 1
-            } else {
-                files += 1
-            }
-            size = size + metadata.size
-        }
-        
-        return (directories, files, size)
-    }
-    
-    @objc func getIndexPathAt(metadata: tableMetadata) -> IndexPath? {
-        
-        var row: Int = 0
-        let section: Int = 0
-        
-        for metadataCount in metadatas {
-            if metadataCount.ocId == metadata.ocId {
-                return IndexPath(row: row, section: section)
-            }
-            row += 1
-        }
-        return nil
-    }
-    
-    @objc func reloadItemAt(indexPath: IndexPath, with createMetadatas: Bool) -> [tableMetadata] {
-        
-        let row = indexPath.row
-        
-        if row > self.metadatas.count - 1 {
-            let metadata = metadatas[row]
-            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
-                metadatas[row] = metadata
-            }
-        }
-        
-        if createMetadatas {
-            self.createMetadatas(metadatasSource: metadatas)
-        }
-        
-        return metadatas
-    }
-    
-    @objc func deleteItemAt(indexPath: IndexPath) -> [tableMetadata] {
-        
-        let row = indexPath.row
-        
-        if row > self.metadatas.count - 1 {
-            metadatas.remove(at: row)
-        }
-        
-        return metadatas
-    }
-    
-    
-    
-    @objc func addMetadata(_ metadata: tableMetadata) -> [tableMetadata] {
-        
-        self.metadatas.append(metadata)
-        createMetadatas(metadatasSource: metadatas)
-        return metadatas
-    }
 }

+ 1 - 1
iOSClient/Networking/NCNetworking.swift

@@ -288,7 +288,7 @@ import Queuer
             self.downloadRequest[fileNameLocalPath] = nil
             
             NotificationCenter.default.postOnMainThread(name: k_notificationCenter_downloadedFile, userInfo: ["metadata":metadata, "selector":selector, "errorCode":errorCode, "errorDescription":errorDescription])
-            NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["ocId":metadata.ocId, "serverUrl":metadata.serverUrl])
+            //NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadDataSource, userInfo: ["ocId":metadata.ocId, "serverUrl":metadata.serverUrl])
             
             completion(errorCode)
         }