Browse Source

improvements

marinofaggiana 4 years ago
parent
commit
2c435ffe70

+ 1 - 1
iOSClient/CCGlobal.h

@@ -337,7 +337,7 @@
 #define k_notificationCenter_uploadFileStart            @"uploadFileStart"                  // userInfo: ocId, task, serverUrl, account
 #define k_notificationCenter_uploadedFile               @"uploadedFile"                     // userInfo: metadata, errorCode, errorDescription
 #define k_notificationCenter_downloadFileStart          @"downloadFileStart"                // userInfo: ocId, task, serverUrl, account
-#define k_notificationCenter_downloadedFile             @"downloadedFile"                   // userInfo: metadata, errorCode, errorDescription
+#define k_notificationCenter_downloadedFile             @"downloadedFile"                   // userInfo: metadata, selector, errorCode, errorDescription
 #define k_notificationCenter_progressTask               @"progressTask"
 
 #define k_notificationCenter_createFolder               @"createFolder"                     // userInfo: fileName, serverUrl, errorCode, errorDescription

+ 2 - 2
iOSClient/Favorites/CCFavorites.m

@@ -610,8 +610,8 @@
         // File do not exists
         if ([CCUtility fileProviderStorageExists:self.metadata.ocId fileNameView:self.metadata.fileNameView]) {
             
-            [[NCNetworkingMain sharedInstance] downloadFileSuccessFailure:self.metadata.fileName ocId:self.metadata.ocId serverUrl:self.metadata.serverUrl selector:selectorLoadFileView errorMessage:@"" errorCode:0];
-                            
+            [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_downloadedFile object:nil userInfo:@{@"metadata": self.metadata, @"selector": selectorLoadFileView, @"errorCode": @(0), @"errorDescription": @""}];
+                                        
         } else {
             
             tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND serverUrl == %@", appDelegate.activeAccount, self.metadata.serverUrl]];

+ 2 - 2
iOSClient/Main/CCMain.m

@@ -2999,8 +2999,8 @@
         // se il file esiste andiamo direttamente al delegato altrimenti carichiamolo
         if ([CCUtility fileProviderStorageExists:self.metadata.ocId fileNameView:self.metadata.fileNameView]) {
             
-            [[NCNetworkingMain sharedInstance] downloadFileSuccessFailure:self.metadata.fileName ocId:self.metadata.ocId serverUrl:self.metadata.serverUrl selector:selectorLoadFileView errorMessage:@"" errorCode:0];
-            
+            [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_downloadedFile object:nil userInfo:@{@"metadata": self.metadata, @"selector": selectorLoadFileView, @"errorCode": @(0), @"errorDescription": @""}];
+                        
         } else {
             
             if (_metadataFolder.e2eEncrypted && ![CCUtility isEndToEndEnabled:appDelegate.activeAccount]) {

+ 4 - 3
iOSClient/Networking/CCNetworking.m

@@ -305,15 +305,16 @@
             }
             
             if (fileName.length > 0 && serverUrl.length > 0) {
-                dispatch_async(dispatch_get_main_queue(), ^{
-                    [self downloadFileSuccessFailure:fileName ocId:metadata.ocId etag:etag date:date serverUrl:serverUrl selector:metadata.sessionSelector errorCode:errorCode];
-                });
+                
+                [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_downloadedFile object:nil userInfo:@{@"metadata": metadata, @"selector": metadata.sessionSelector, @"errorCode": @(errorCode), @"errorDescription": @""}];
             }
             
         } else {
             
             NSLog(@"[LOG] Remove record ? : metadata not found %@", url);
 
+            
+            
             dispatch_async(dispatch_get_main_queue(), ^{
                 
                 if ([self.delegate respondsToSelector:@selector(downloadFileSuccessFailure:ocId:serverUrl:selector:errorMessage:errorCode:)]) {

+ 125 - 1
iOSClient/Networking/NCNetworkingNotificationCenter.swift

@@ -28,7 +28,8 @@ import Foundation
         let instance = NCNetworkingNotificationCenter()
         
         NotificationCenter.default.addObserver(instance, selector: #selector(downloadFileStart(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_downloadFileStart), object: nil)
-        
+        NotificationCenter.default.addObserver(instance, selector: #selector(downloadedFile(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_downloadedFile), object: nil)
+
         NotificationCenter.default.addObserver(instance, selector: #selector(uploadFileStart(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_uploadFileStart), object: nil)
         NotificationCenter.default.addObserver(instance, selector: #selector(uploadedFile(_:)), name: NSNotification.Name(rawValue: k_notificationCenter_uploadedFile), object: nil)
         
@@ -50,6 +51,129 @@ import Foundation
         }
     }
     
+    @objc func downloadedFile(_ notification: NSNotification) {
+            
+        if let userInfo = notification.userInfo as NSDictionary? {
+            if let metadata = userInfo["metadata"] as? tableMetadata, let selector = userInfo["selector"] as? String, let errorCode = userInfo["errorCode"] as? Int, let errorDescription = userInfo["errorDescription"] as? String {
+        
+                if metadata.account != appDelegate.activeAccount { return }
+                
+                if errorCode == 0 {
+                    
+                    NCMainCommon.sharedInstance.reloadDatasource(ServerUrl: metadata.serverUrl, ocId: metadata.ocId, action: Int32(k_action_MOD))
+                    
+                    // Synchronized
+                    if selector == selectorDownloadSynchronize {
+                        appDelegate.updateApplicationIconBadgeNumber()
+                        appDelegate.startLoadAutoDownloadUpload()
+                        return
+                    }
+                    
+                    // Modify Photo
+                    if selector == selectorDownloadEditPhoto {
+                        NCMainCommon.sharedInstance.editPhoto(metadata, viewController: appDelegate.activeMain)
+                        return
+                    }
+                    
+                    // open View File
+                    if (selector == selectorLoadFileView || selector == selectorLoadFileViewFavorite || selector == selectorLoadFileInternalView) && UIApplication.shared.applicationState == UIApplication.State.active {
+                    
+                        var uti = CCUtility.insertTypeFileIconName(metadata.fileNameView, metadata: metadata)
+                        if uti == nil {
+                            uti = ""
+                        } else if uti!.contains("opendocument") && !NCUtility.sharedInstance.isRichDocument(metadata) {
+                            metadata.typeFile = k_metadataTypeFile_unknown
+                        }
+                        
+        #if HC
+                        if metadata.typeFile == k_metadataTypeFile_imagemeter {
+                            
+                            if !IMUtility.shared.IMUnzip(metadata: metadata) {
+                                NCContentPresenter.shared.messageNotification("_error_", description: "Bundle imagemeter error. 🤷‍♂️", delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: 0)
+                                return
+                            }
+                            
+                            let storyboard = UIStoryboard(name: "IMImagemeter", bundle: nil)
+                            let imagemeterViewer = storyboard.instantiateInitialViewController() as! IMImagemeterViewer
+                            imagemeterViewer.metadata = metadata
+                            imagemeterViewer.modalPresentationStyle = UIModalPresentationStyle.fullScreen
+                            imagemeterViewer.imagemeterViewerDelegate = self
+                            
+                            self.appDelegate.window.rootViewController?.present(imagemeterViewer, animated: true, completion: nil)
+                            
+                            return
+                        }
+        #else
+                        if metadata.typeFile == k_metadataTypeFile_imagemeter {
+                            NCMainCommon.sharedInstance.openIn(metadata: metadata, selector: selector)
+                            return
+                        }
+        #endif
+                        
+                        if metadata.typeFile == k_metadataTypeFile_compress || metadata.typeFile == k_metadataTypeFile_unknown {
+
+                            NCMainCommon.sharedInstance.openIn(metadata: metadata, selector: selector)
+                            
+                        } else {
+                            
+                            if appDelegate.activeMain.view.window != nil {
+                                appDelegate.activeMain.shouldPerformSegue(metadata, selector: selector)
+                            } else if appDelegate.activeFavorites.view.window != nil {
+                                appDelegate.activeFavorites.shouldPerformSegue(metadata, selector: selector)
+                            }
+                        }
+                    }
+                    
+                    // Open in...
+                    if (selector == selectorOpenIn || selector == selectorOpenInDetail) && UIApplication.shared.applicationState == UIApplication.State.active {
+
+                        NCMainCommon.sharedInstance.openIn(metadata: metadata, selector: selector)
+                    }
+                    
+                    // Save to Photo Album
+                    if selector == selectorSave {
+                        
+                        appDelegate.activeMain.save(toPhotoAlbum: metadata)
+                    }
+                    
+                    // Copy File
+                    if selector == selectorLoadCopy {
+                        
+                        appDelegate.activeMain.copyFile(toPasteboard: metadata)
+                    }
+                    
+                    // Set as available offline
+                    if selector == selectorLoadOffline {
+                        
+                        NCManageDatabase.sharedInstance.setLocalFile(ocId: metadata.ocId, offline: true)
+                    }
+                                
+                    appDelegate.startLoadAutoDownloadUpload()
+                    
+                } else {
+                    
+                    // File do not exists on server, remove in local
+                    if (errorCode == kOCErrorServerPathNotFound || errorCode == -1011) { // - 1011 = kCFURLErrorBadServerResponse
+                        
+                        do {
+                            try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId))
+                        } catch { }
+                        
+                        NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                        NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "ocId == %@", metadata.ocId))
+                        
+                        NCMainCommon.sharedInstance.reloadDatasource(ServerUrl: metadata.serverUrl, ocId: metadata.ocId, action: Int32(k_action_DEL))
+                        
+                    } else {
+                        NCContentPresenter.shared.messageNotification("_download_file_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
+                    }
+                }
+            
+                appDelegate.startLoadAutoDownloadUpload()
+            }
+        }
+    }
+    
     //MARK: - Upload
 
     @objc func uploadFileStart(_ notification: NSNotification) {