Browse Source

coding

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 years ago
parent
commit
d988a226f2

+ 7 - 6
iOSClient/AppDelegate.swift

@@ -56,10 +56,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
 
 
     var disableSharesView: Bool = false
     var disableSharesView: Bool = false
     var documentPickerViewController: NCDocumentPickerViewController?
     var documentPickerViewController: NCDocumentPickerViewController?
-    var networkingProcessUpload: NCNetworkingProcessUpload?
     var shares: [tableShare] = []
     var shares: [tableShare] = []
     var timerErrorNetworking: Timer?
     var timerErrorNetworking: Timer?
-    var timerProcess: Timer?
 
 
     private var privacyProtectionWindow: UIWindow?
     private var privacyProtectionWindow: UIWindow?
 
 
@@ -201,13 +199,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         NCSettingsBundleHelper.setVersionAndBuildNumber()
         NCSettingsBundleHelper.setVersionAndBuildNumber()
 
 
         if !account.isEmpty {
         if !account.isEmpty {
-            networkingProcessUpload?.verifyUploadZombie()
+            NCNetworkingProcessUpload.shared.verifyUploadZombie()
         }
         }
 
 
         // Start Auto Upload
         // Start Auto Upload
         NCAutoUpload.shared.initAutoUpload(viewController: nil) { items in
         NCAutoUpload.shared.initAutoUpload(viewController: nil) { items in
             NKCommon.shared.writeLog("[INFO] Initialize Auto upload with \(items) uploads")
             NKCommon.shared.writeLog("[INFO] Initialize Auto upload with \(items) uploads")
-            DispatchQueue.main.async { self.networkingProcessUpload = NCNetworkingProcessUpload() }
+            NCNetworkingProcessUpload.shared.startTimer()
         }
         }
 
 
         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterApplicationDidBecomeActive)
         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterApplicationDidBecomeActive)
@@ -273,7 +271,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         NKCommon.shared.writeLog("[INFO] Application did enter in background")
         NKCommon.shared.writeLog("[INFO] Application did enter in background")
 
 
         // STOP UPLOAD PROCESS
         // STOP UPLOAD PROCESS
-        networkingProcessUpload?.stopTimer()
+        NCNetworkingProcessUpload.shared.stopTimer()
 
 
         scheduleAppRefresh()
         scheduleAppRefresh()
         scheduleAppProcessing()
         scheduleAppProcessing()
@@ -373,6 +371,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         
         
         NCAutoUpload.shared.initAutoUpload(viewController: nil) { items in
         NCAutoUpload.shared.initAutoUpload(viewController: nil) { items in
             NKCommon.shared.writeLog("[INFO] Completition handler refresh task [Auto upload] with \(items) uploads")
             NKCommon.shared.writeLog("[INFO] Completition handler refresh task [Auto upload] with \(items) uploads")
+            if items == 0 {
+                
+            }
             task.setTaskCompleted(success: true)
             task.setTaskCompleted(success: true)
         }
         }
     }
     }
@@ -936,6 +937,6 @@ extension AppDelegate: NCAudioRecorderViewControllerDelegate {
 extension AppDelegate: NCCreateFormUploadConflictDelegate {
 extension AppDelegate: NCCreateFormUploadConflictDelegate {
     func dismissCreateFormUploadConflict(metadatas: [tableMetadata]?) {
     func dismissCreateFormUploadConflict(metadatas: [tableMetadata]?) {
         guard let metadatas = metadatas, !metadatas.isEmpty else { return }
         guard let metadatas = metadatas, !metadatas.isEmpty else { return }
-        networkingProcessUpload?.createProcessUploads(metadatas: metadatas, completion: { _ in })
+        NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: metadatas) { _ in }
     }
     }
 }
 }

+ 1 - 2
iOSClient/Main/Create cloud/NCCreateFormUploadAssets.swift

@@ -401,8 +401,7 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 }
                 }
 
 
             } else {
             } else {
-
-                self.appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: metadatasNOConflict, completion: { _ in })
+                NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: metadatasNOConflict, completion: { _ in })
             }
             }
 
 
             DispatchQueue.main.async {self.dismiss(animated: true, completion: nil)  }
             DispatchQueue.main.async {self.dismiss(animated: true, completion: nil)  }

+ 1 - 1
iOSClient/Main/Create cloud/NCCreateFormUploadScanDocument.swift

@@ -582,7 +582,7 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
 
 
         NCActivityIndicator.shared.stop()
         NCActivityIndicator.shared.stop()
 
 
-        appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: [metadata], completion: { _ in })
+        NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: [metadata], completion: { _ in })
 
 
         // Request delete all image scanned
         // Request delete all image scanned
         let alertController = UIAlertController(title: "", message: NSLocalizedString("_delete_all_scanned_images_", comment: ""), preferredStyle: .alert)
         let alertController = UIAlertController(title: "", message: NSLocalizedString("_delete_all_scanned_images_", comment: ""), preferredStyle: .alert)

+ 1 - 1
iOSClient/Main/Create cloud/NCCreateFormUploadVoiceNote.swift

@@ -263,7 +263,7 @@ class NCCreateFormUploadVoiceNote: XLFormViewController, NCSelectDelegate, AVAud
 
 
         CCUtility.copyFile(atPath: self.fileNamePath, toPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView))
         CCUtility.copyFile(atPath: self.fileNamePath, toPath: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView))
 
 
-        appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: [metadata], completion: { _ in })
+        NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: [metadata], completion: { _ in })
 
 
         self.dismiss(animated: true, completion: nil)
         self.dismiss(animated: true, completion: nil)
     }
     }

+ 1 - 1
iOSClient/Main/NCPickerViewController.swift

@@ -175,7 +175,7 @@ class NCDocumentPickerViewController: NSObject, UIDocumentPickerDelegate {
                     }
                     }
 
 
                 } else {
                 } else {
-                    appDelegate.networkingProcessUpload?.createProcessUploads(metadatas: [metadataForUpload], completion: { _ in })
+                    NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: [metadataForUpload], completion: { _ in })
                 }
                 }
 
 
             } else {
             } else {

+ 1 - 1
iOSClient/Networking/NCAutoUpload.swift

@@ -173,7 +173,7 @@ class NCAutoUpload: NSObject {
             self.endForAssetToUpload = true
             self.endForAssetToUpload = true
             if selector == NCGlobal.shared.selectorUploadAutoUploadAll || self.applicationState == .active {
             if selector == NCGlobal.shared.selectorUploadAutoUploadAll || self.applicationState == .active {
                 NKCommon.shared.writeLog("[INFO] Start createProcessUploads")
                 NKCommon.shared.writeLog("[INFO] Start createProcessUploads")
-                self.appDelegate?.networkingProcessUpload?.createProcessUploads(metadatas: metadatas, completion: completion)
+                NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: metadatas, completion: completion)
             } else {
             } else {
                 NKCommon.shared.writeLog("[INFO] Start createUploadProcessAutoUploadInBackground")
                 NKCommon.shared.writeLog("[INFO] Start createUploadProcessAutoUploadInBackground")
                 var metadatasForUpload: [tableMetadata] = []
                 var metadatasForUpload: [tableMetadata] = []

+ 26 - 24
iOSClient/Networking/NCNetworkingProcessUpload.swift

@@ -26,32 +26,30 @@ import NextcloudKit
 import Photos
 import Photos
 
 
 class NCNetworkingProcessUpload: NSObject {
 class NCNetworkingProcessUpload: NSObject {
+    public static let shared: NCNetworkingProcessUpload = {
+        let instance = NCNetworkingProcessUpload()
+        return instance
+    }()
 
 
-    let appDelegate = UIApplication.shared.delegate as? AppDelegate
+    var timerProcess: Timer?
 
 
-    override init() {
-        super.init()
-        startTimer()
+    func startTimer() {
+        timerProcess?.invalidate()
+        timerProcess = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(processTimer), userInfo: nil, repeats: true)
     }
     }
 
 
-    private func startProcess() {
-        if appDelegate?.timerProcess?.isValid ?? false {
-            DispatchQueue.main.async { self.process() }
-        }
+    func stopTimer() {
+        timerProcess?.invalidate()
     }
     }
 
 
-    func startTimer() {
-        appDelegate?.timerProcess?.invalidate()
-        appDelegate?.timerProcess = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(process), userInfo: nil, repeats: true)
+    @objc func processTimer() {
+        process { _ in }
     }
     }
 
 
-    func stopTimer() {
-        appDelegate?.timerProcess?.invalidate()
-    }
+    private func process(completition: @escaping (_ items: Int) -> Void) {
+
+        guard let account = NCManageDatabase.shared.getActiveAccount() else { return }
 
 
-    @objc private func process() {
-        
-        guard let account = NCManageDatabase.shared.getActiveAccount(), UIApplication.shared.applicationState == .active else { return }
         let metadatasUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d", NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading))
         let metadatasUpload = NCManageDatabase.shared.getMetadatas(predicate: NSPredicate(format: "status == %d OR status == %d", NCGlobal.shared.metadataStatusInUpload, NCGlobal.shared.metadataStatusUploading))
         if metadatasUpload.filter({ $0.chunk || $0.e2eEncrypted }).count > 0 { return }
         if metadatasUpload.filter({ $0.chunk || $0.e2eEncrypted }).count > 0 { return }
         let isWiFi = NCNetworking.shared.networkReachability == NKCommon.typeReachability.reachableEthernetOrWiFi
         let isWiFi = NCNetworking.shared.networkReachability == NKCommon.typeReachability.reachableEthernetOrWiFi
@@ -134,16 +132,20 @@ class NCNetworkingProcessUpload: NSObject {
                     NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: NCNetworking.shared.sessionIdentifierBackground, sessionError: "", sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusWaitUpload)
                     NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: NCNetworking.shared.sessionIdentifierBackground, sessionError: "", sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusWaitUpload)
                 }
                 }
             }
             }
-             
+
             // verify delete Asset Local Identifiers in auto upload (DELETE Photos album)
             // verify delete Asset Local Identifiers in auto upload (DELETE Photos album)
             DispatchQueue.main.async {
             DispatchQueue.main.async {
-                if counterUpload == 0 && !(UIApplication.shared.delegate as! AppDelegate).isPasscodePresented() {
+                let applicationState = UIApplication.shared.applicationState
+                let appDelegate = UIApplication.shared.delegate as! AppDelegate
+
+                if applicationState == .active && counterUpload == 0 && !appDelegate.isPasscodePresented() {
                     self.deleteAssetLocalIdentifiers(account: account.account) {
                     self.deleteAssetLocalIdentifiers(account: account.account) {
                         self.startTimer()
                         self.startTimer()
                     }
                     }
-                } else {
+                } else if applicationState == .active {
                     self.startTimer()
                     self.startTimer()
                 }
                 }
+                completition(counterUpload)
             }
             }
         })
         })
     }
     }
@@ -178,7 +180,7 @@ class NCNetworkingProcessUpload: NSObject {
 
 
     // MARK: -
     // MARK: -
 
 
-    @objc func createProcessUploads(metadatas: [tableMetadata], verifyAlreadyExists: Bool = false, completion: @escaping (_ items: Int) -> Void) {
+    func createProcessUploads(metadatas: [tableMetadata], verifyAlreadyExists: Bool = false, completion: @escaping (_ items: Int) -> Void) {
 
 
         var metadatasForUpload: [tableMetadata] = []
         var metadatasForUpload: [tableMetadata] = []
         for metadata in metadatas {
         for metadata in metadatas {
@@ -190,13 +192,12 @@ class NCNetworkingProcessUpload: NSObject {
             metadatasForUpload.append(metadata)
             metadatasForUpload.append(metadata)
         }
         }
         NCManageDatabase.shared.addMetadatas(metadatasForUpload)
         NCManageDatabase.shared.addMetadatas(metadatasForUpload)
-        startProcess()
         completion(metadatasForUpload.count)
         completion(metadatasForUpload.count)
     }
     }
 
 
     // MARK: -
     // MARK: -
 
 
-    @objc func verifyUploadZombie() {
+    func verifyUploadZombie() {
 
 
         var session: URLSession?
         var session: URLSession?
 
 
@@ -208,7 +209,7 @@ class NCNetworkingProcessUpload: NSObject {
             NCManageDatabase.shared.deleteChunks(account: metadata.account, ocId: metadata.ocId)
             NCManageDatabase.shared.deleteChunks(account: metadata.account, ocId: metadata.ocId)
             NCUtilityFileSystem.shared.deleteFile(filePath: path)
             NCUtilityFileSystem.shared.deleteFile(filePath: path)
         }
         }
-        
+
         // verify metadataStatusInUpload (BACKGROUND)
         // verify metadataStatusInUpload (BACKGROUND)
         let metadatasInUploadBackground = NCManageDatabase.shared.getMetadatas(
         let metadatasInUploadBackground = NCManageDatabase.shared.getMetadatas(
             predicate: NSPredicate(
             predicate: NSPredicate(
@@ -268,3 +269,4 @@ class NCNetworkingProcessUpload: NSObject {
         }
         }
     }
     }
 }
 }
+

+ 2 - 1
iOSClient/Viewer/NCViewerQuickLook/NCViewerQuickLook.swift

@@ -153,7 +153,8 @@ extension NCViewerQuickLook: QLPreviewControllerDataSource, QLPreviewControllerD
         }
         }
         metadataForUpload.size = size
         metadataForUpload.size = size
         metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
         metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
-        (UIApplication.shared.delegate as? AppDelegate)?.networkingProcessUpload?.createProcessUploads(metadatas: [metadataForUpload], completion: { _ in })
+
+        NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: [metadataForUpload]) { _ in }
     }
     }
 
 
     func previewController(_ controller: QLPreviewController, didSaveEditedCopyOf previewItem: QLPreviewItem, at modifiedContentsURL: URL) {
     func previewController(_ controller: QLPreviewController, didSaveEditedCopyOf previewItem: QLPreviewItem, at modifiedContentsURL: URL) {