marinofaggiana 4 年之前
父节点
当前提交
7d1d7bfbda

+ 33 - 58
iOSClient/Main/NCDetailViewController.swift

@@ -196,35 +196,6 @@ class NCDetailViewController: UIViewController {
         }
     }
     
-    @objc func synchronizationMedia(_ notification: NSNotification) {
-        if self.view?.window == nil { return }
-        
-        if let userInfo = notification.userInfo as NSDictionary? {
-            if let type = userInfo["type"] as? String {
-                
-                if (self.metadata?.typeFile == k_metadataTypeFile_image || self.metadata?.typeFile == k_metadataTypeFile_video || self.metadata?.typeFile == k_metadataTypeFile_audio) && self.mediaFilterImage {
-                                        
-                    self.metadatas = appDelegate.activeMedia.metadatas
-                    
-                    if type == "delete" {
-                        if metadatas.count > 0 {
-                            var index = viewerImageViewController!.index - 1
-                            if index < 0 { index = 0}
-                            self.metadata = metadatas[index]
-                            viewImage()
-                        } else {
-                            viewUnload()
-                        }
-                    }
-                    
-                    if type == "rename" || type == "move"   {
-                        viewerImageViewController?.reloadContentViews()
-                    }
-                }
-            }
-        }
-    }
-    
     @objc func moveFile(_ notification: NSNotification) {
         if self.view?.window == nil { return }
         
@@ -237,7 +208,7 @@ class NCDetailViewController: UIViewController {
                     // IMAGE
                     if (metadata.typeFile == k_metadataTypeFile_image || metadata.typeFile == k_metadataTypeFile_video || metadata.typeFile == k_metadataTypeFile_audio) {
                         
-                        deleteFile(notification)
+                        viewImage()
                     }
                     
                     // OTHER
@@ -307,20 +278,24 @@ class NCDetailViewController: UIViewController {
                 if metadata.account != self.metadata?.account || metadata.serverUrl != self.metadata?.serverUrl { return }
                 
                 if errorCode == 0 {
-                    if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
-                        self.metadata = metadata
+                    
+                    // IMAGE
+                    if (metadata.typeFile == k_metadataTypeFile_image || metadata.typeFile == k_metadataTypeFile_video || metadata.typeFile == k_metadataTypeFile_audio) {
                         
-                        // IMAGE
-                        if (metadata.typeFile == k_metadataTypeFile_image || metadata.typeFile == k_metadataTypeFile_video || metadata.typeFile == k_metadataTypeFile_audio) {
-                            
-                            viewImage()
-                        }
+                        viewImage()
+                    }
+                    
+                    // OTHER
+                    if (metadata.typeFile == k_metadataTypeFile_document || metadata.typeFile == k_metadataTypeFile_unknown) && metadata.ocId == self.metadata?.ocId {
                         
-                        // OTHER
-                        if (metadata.typeFile == k_metadataTypeFile_document || metadata.typeFile == k_metadataTypeFile_unknown) && metadata.ocId == self.metadata?.ocId {
+                        if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId)) {
+                            self.metadata = metadata
                             self.navigationController?.navigationBar.topItem?.title = metadata.fileNameView
+                        } else {
+                            viewUnload()
                         }
                     }
+                    
                 } else {
                     NCContentPresenter.shared.messageNotification("_error_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
                 }
@@ -596,33 +571,33 @@ extension NCDetailViewController: NCViewerImageViewControllerDelegate, NCViewerI
         
         closeAllSubView()
         
-        if let metadatas = NCViewerImageCommon.shared.getMetadatasDatasource(metadata: self.metadata, metadatas: self.metadatas, favoriteDatasorce: favoriteFilterImage, mediaDatasorce: mediaFilterImage, offLineDatasource: offlineFilterImage) {
-                            
+        NCViewerImageCommon.shared.getMetadatasDatasource(metadata: self.metadata, metadatas: self.metadatas, favoriteDatasorce: favoriteFilterImage, mediaDatasorce: mediaFilterImage, offLineDatasource: offlineFilterImage) { (metadatas) in
+            
+            guard let metadatas = metadatas else {
+                self.viewUnload()
+                return
+            }
             var index = 0
+            
             if let indexFound = metadatas.firstIndex(where: { $0.ocId == self.metadata?.ocId }) { index = indexFound }
             // Video -> is a Live Photo ?
-            if metadata?.typeFile == k_metadataTypeFile_video && metadata != nil {
-                let filename = (metadata!.fileNameView as NSString).deletingPathExtension.lowercased()
+            if self.metadata?.typeFile == k_metadataTypeFile_video {
+                let filename = (self.metadata!.fileNameView as NSString).deletingPathExtension.lowercased()
                 if let indexFound = metadatas.firstIndex(where: { (($0.fileNameView as NSString).deletingPathExtension.lowercased() as String) == filename && $0.typeFile == k_metadataTypeFile_image }) { index = indexFound }
             }
             self.metadatas = metadatas
-            
-            viewerImageViewController = NCViewerImageViewController(index: index, dataSource: self, delegate: self)
-            if viewerImageViewController != nil {
+
+            self.viewerImageViewController = NCViewerImageViewController(index: index, dataSource: self, delegate: self)
+            if self.viewerImageViewController != nil {
                            
                 self.backgroundView.image = nil
-
-                viewerImageViewController!.view.isHidden = true
-                
-                viewerImageViewController!.enableInteractiveDismissal = true
-                
-                addChild(viewerImageViewController!)
-                view.addSubview(viewerImageViewController!.view)
-                
-                viewerImageViewController!.view.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
-                viewerImageViewController!.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
-                
-                viewerImageViewController!.didMove(toParent: self)
+                self.viewerImageViewController!.view.isHidden = true
+                self.viewerImageViewController!.enableInteractiveDismissal = true
+                self.addChild(self.viewerImageViewController!)
+                self.view.addSubview(self.viewerImageViewController!.view)
+                self.viewerImageViewController!.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
+                self.viewerImageViewController!.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
+                self.viewerImageViewController!.didMove(toParent: self)
                 
                 DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
                     self.viewerImageViewController!.changeInViewSize(to: self.backgroundView.frame.size)

+ 5 - 5
iOSClient/Media/NCMedia.swift

@@ -126,7 +126,7 @@ class NCMedia: UIViewController, DropdownMenuDelegate, DZNEmptyDataSetSource, DZ
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         
-        reloadDataSourceWithCompletion {
+        self.reloadDataSourceWithCompletion { (_) in
             self.searchNewPhotoVideo()
         }
     }
@@ -350,7 +350,7 @@ class NCMedia: UIViewController, DropdownMenuDelegate, DZNEmptyDataSetSource, DZ
         if serverUrl != nil {
             let path = CCUtility.returnPathfromServerUrl(serverUrl, urlBase: appDelegate.urlBase, account: appDelegate.account) ?? ""
             NCManageDatabase.sharedInstance.setAccountMediaPath(path, account: appDelegate.account)
-            reloadDataSourceWithCompletion {
+            reloadDataSourceWithCompletion { (_) in
                 self.searchNewPhotoVideo()
             }
         }
@@ -629,10 +629,10 @@ extension NCMedia: UICollectionViewDelegateFlowLayout {
 extension NCMedia {
 
     @objc func reloadDataSource() {
-        self.reloadDataSourceWithCompletion { }
+        self.reloadDataSourceWithCompletion { (_) in }
     }
     
-    @objc func reloadDataSourceWithCompletion(_ completion: @escaping () -> Void) {
+    @objc func reloadDataSourceWithCompletion(_ completion: @escaping (_ metadatas: [tableMetadata]) -> Void) {
         
         if (appDelegate.account == nil || appDelegate.account.count == 0 || appDelegate.maintenanceMode == true) { return }
         
@@ -672,7 +672,7 @@ extension NCMedia {
                 self.reloadDataThenPerform {
                     self.updateMediaControlVisibility()
                     self.mediaCommandTitle()
-                    completion()
+                    completion(self.metadatas)
                 }
             }
         }

+ 16 - 10
iOSClient/Viewer/NCViewerImage/NCViewerImageCommon.swift

@@ -30,6 +30,8 @@ class NCViewerImageCommon: NSObject {
         return instance
     }()
     
+    private let appDelegate = UIApplication.shared.delegate as! AppDelegate
+
     static var offOutlineAudio: UIImage?
     static var offOutlineVideo: UIImage?
     static var offOutlineImage: UIImage?
@@ -40,16 +42,18 @@ class NCViewerImageCommon: NSObject {
         NCViewerImageCommon.offOutlineImage = CCGraphics.changeThemingColorImage(UIImage.init(named: "offOutlineImage"), width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.width, color: NCBrandColor.sharedInstance.brandElement)
     }
     
-    func getMetadatasDatasource(metadata: tableMetadata?, metadatas: [tableMetadata], favoriteDatasorce: Bool, mediaDatasorce: Bool, offLineDatasource: Bool) -> [tableMetadata]? {
-        guard let metadata = metadata else { return nil }
+    func getMetadatasDatasource(metadata: tableMetadata?, metadatas: [tableMetadata], favoriteDatasorce: Bool, mediaDatasorce: Bool, offLineDatasource: Bool, completion: @escaping (_ metadatas: [tableMetadata]?) -> Void) {
+        guard let metadata = metadata else {
+            completion(nil)
+            return
+        }
         if favoriteDatasorce {
-            if let metadatas = NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND favorite == 1 AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings()) {
-                return metadatas
-            } else {
-                return [metadata]
-            }
+            let metadatas = NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND favorite == 1 AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings())
+            completion(metadatas)
         } else if mediaDatasorce {
-            return metadatas
+            appDelegate.activeMedia.reloadDataSourceWithCompletion { (metadatas) in
+                completion(metadatas)
+            }
         } else if offLineDatasource {
             var datasourceSorted = ""
             var datasourceAscending = true
@@ -59,9 +63,11 @@ class NCViewerImageCommon: NSObject {
             for file: tableLocalFile in files {
                 ocIds.append(file.ocId)
             }
-            return NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND ocId IN %@ AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, ocIds, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: datasourceSorted, ascending: datasourceAscending)
+            let metadatas = NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND ocId IN %@ AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, ocIds, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: datasourceSorted, ascending: datasourceAscending)
+            completion(metadatas)
         } else {
-            return NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, metadata.serverUrl, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings())
+            let metadatas = NCManageDatabase.sharedInstance.getMetadatasViewer(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND (typeFile == %@ || typeFile == %@ || typeFile == %@)", metadata.account, metadata.serverUrl, k_metadataTypeFile_image, k_metadataTypeFile_video, k_metadataTypeFile_audio), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings())
+            completion(metadatas)
         }
     }