marinofaggiana 4 سال پیش
والد
کامیت
c044993de2
3فایلهای تغییر یافته به همراه20 افزوده شده و 2 حذف شده
  1. 1 0
      iOSClient/CCGlobal.h
  2. 4 1
      iOSClient/Media/NCMedia.swift
  3. 15 1
      iOSClient/Networking/NCOperationQueue.swift

+ 1 - 0
iOSClient/CCGlobal.h

@@ -313,6 +313,7 @@
 #define k_notificationCenter_richdocumentGrabFocus      @"richdocumentGrabFocus"
 #define k_notificationCenter_reloadDataNCShare          @"reloadDataNCShare"
 #define k_notificationCenter_reloadDataSource           @"reloadDataSource"                 // userInfo: ocId?, serverUrl?
+#define k_notificationCenter_reloadMediaDataSource      @"reloadMediaDataSource"
 
 #define k_notificationCenter_uploadFileStart            @"uploadFileStart"                  // userInfo: ocId, task, serverUrl, account
 #define k_notificationCenter_uploadedFile               @"uploadedFile"                     // userInfo: metadata, errorCode, errorDescription

+ 4 - 1
iOSClient/Media/NCMedia.swift

@@ -65,6 +65,7 @@ class NCMedia: UIViewController, DropdownMenuDelegate, DZNEmptyDataSetSource, DZ
         appDelegate.activeMedia = self
         
         NotificationCenter.default.addObserver(self, selector: #selector(reloadDataSource), name: NSNotification.Name(rawValue: k_notificationCenter_initializeMain), object: nil)
+         NotificationCenter.default.addObserver(self, selector: #selector(reloadDataSource), name: NSNotification.Name(rawValue: k_notificationCenter_reloadMediaDataSource), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(applicationWillEnterForeground), name: NSNotification.Name(rawValue: k_notificationCenter_applicationWillEnterForeground), object: nil)
     }
     
@@ -327,7 +328,9 @@ class NCMedia: UIViewController, DropdownMenuDelegate, DZNEmptyDataSetSource, DZ
                     let metadatas = self.metadatas.filter { $0.ocId != metadata.ocId }
                     self.metadatas = metadatas
                     
-                    if let row = indexes.first {
+                    if self.metadatas.count == 0 {
+                        collectionView?.reloadData()
+                    } else if let row = indexes.first {
                         let indexPath = IndexPath(row: row, section: 0)
                         collectionView?.deleteItems(at: [indexPath])
                     }

+ 15 - 1
iOSClient/Networking/NCOperationQueue.swift

@@ -36,6 +36,7 @@ import NCCommunication
     private let readFolderSyncQueue = Queuer(name: "readFolderSyncQueue", maxConcurrentOperationCount: 1, qualityOfService: .default)
     private let downloadThumbnailQueue = Queuer(name: "downloadThumbnailQueue", maxConcurrentOperationCount: 10, qualityOfService: .default)
     private let readFileForMediaQueue = Queuer(name: "readFileForMediaQueue", maxConcurrentOperationCount: 10, qualityOfService: .default)
+    private var timerReadFileForMediaQueue: Timer?
 
     @objc func cancelAllQueue() {
         downloadCancelAll()
@@ -45,6 +46,7 @@ import NCCommunication
     }
     
     // Download file
+    
     @objc func download(metadata: tableMetadata, selector: String, setFavorite: Bool) {
         downloadQueue.addOperation(NCOperationDownload.init(metadata: metadata, selector: selector, setFavorite: setFavorite))
     }
@@ -64,6 +66,7 @@ import NCCommunication
     }
     
     // Download Thumbnail
+    
     @objc func downloadThumbnail(metadata: tableMetadata, activeUrl: String, view: Any, indexPath: IndexPath) {
         if metadata.hasPreview && (!CCUtility.fileProviderStoragePreviewIconExists(metadata.ocId, etag: metadata.etag)) {
             for operation in  downloadThumbnailQueue.operations {
@@ -85,7 +88,7 @@ import NCCommunication
         downloadThumbnailQueue.cancelAll()
     }
     
-    // Verify exists yet file
+    // Get file information
     
     @objc func readFileForMedia(metadata: tableMetadata) {
         for operation in readFileForMediaQueue.operations {
@@ -105,6 +108,16 @@ import NCCommunication
     @objc func readFileForMediaCancelAll() {
         readFileForMediaQueue.cancelAll()
     }
+    
+    @objc func notificationReloadDataSourceMedia() {
+        NotificationCenter.default.postOnMainThread(name: k_notificationCenter_reloadMediaDataSource)
+    }
+    
+    func reloadDataSourceMedia() {
+        if !(timerReadFileForMediaQueue?.isValid ?? false) {
+            timerReadFileForMediaQueue = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(notificationReloadDataSourceMedia), userInfo: nil, repeats: false)
+        }
+    }
 }
 
 //MARK: -
@@ -272,6 +285,7 @@ class NCOperationReadFileForMediaQueue: ConcurrentOperation {
                         }
                         if modify {
                             NCManageDatabase.sharedInstance.addMetadata(metadata)
+                            NCOperationQueue.shared.reloadDataSourceMedia()
                         }
                     }
                 } else if errorCode == 404 {