Marino Faggiana 7 vuotta sitten
vanhempi
commit
b1ff13a67b
1 muutettua tiedostoa jossa 47 lisäystä ja 45 poistoa
  1. 47 45
      Picker/DocumentPickerViewController.swift

+ 47 - 45
Picker/DocumentPickerViewController.swift

@@ -39,19 +39,19 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
     var parameterMode: UIDocumentPickerMode?
     var parameterOriginalURL: URL?
     var parameterProviderIdentifier: String!
-    var parameterPasscodeCorrect: Bool? = false
-    var parameterEncrypted: Bool? = false
-    var isCryptoCloudMode: Bool? = false
+    var parameterPasscodeCorrect: Bool = false
+    var parameterEncrypted: Bool = false
+    var isCryptoCloudMode: Bool = false
     
-    var metadata: tableMetadata?
+    var recordMetadata = tableMetadata()
     var recordsTableMetadata: [tableMetadata]?
-    var titleFolder: String?
+    var titleFolder: String = ""
     
-    var activeAccount: String?
-    var activeUrl: String?
-    var activeUser: String?
-    var activePassword: String?
-    var directoryUser: String?
+    var activeAccount: String = ""
+    var activeUrl: String = ""
+    var activeUser: String = ""
+    var activePassword: String = ""
+    var directoryUser: String = ""
     
     var serverUrl: String?
     var thumbnailInLoading = [String: IndexPath]()
@@ -59,8 +59,8 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
     
     var passcodeFailedAttempts: UInt = 0
     var passcodeLockUntilDate: Date? = nil
-    var passcodeIsPush: Bool? = false
-    var serverUrlPush: String?
+    var passcodeIsPush: Bool = false
+    var serverUrlPush: String = ""
     
     
     lazy var networkingOperationQueue: OperationQueue = {
@@ -265,7 +265,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         metadataNet.serverUrl = self.serverUrl
         metadataNet.selector = selectorReadFolder
         
-        let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode!)
+        let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode)
         networkingOperationQueue.addOperation(ocNetworking)
         
         hud.visibleIndeterminateHud()
@@ -286,7 +286,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
     func readFolderSuccess(_ metadataNet: CCMetadataNet!, metadataFolder: tableMetadata?, metadatas: [Any]!) {
         
         // remove all record
-        var predicate = NSPredicate(format: "account = %@ AND directoryID = %@ AND session = ''", activeAccount!, metadataNet.directoryID!)
+        var predicate = NSPredicate(format: "account = %@ AND directoryID = %@ AND session = ''", activeAccount, metadataNet.directoryID!)
         NCManageDatabase.sharedInstance.deleteMetadata(predicate: predicate, clearDateReadDirectoryID: metadataNet.directoryID!)
         
         for metadata in metadatas as! [tableMetadata] {
@@ -328,7 +328,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
             _ = NCManageDatabase.sharedInstance.addMetadata(metadata)
             
             // if plist do not exists, download it
-            if CCUtility.isCryptoPlistString(fileName) && FileManager.default.fileExists(atPath: "\(directoryUser!)/\(fileName)") == false {
+            if CCUtility.isCryptoPlistString(fileName) && FileManager.default.fileExists(atPath: "\(directoryUser)/\(fileName)") == false {
                 
                 let metadataNet = CCMetadataNet.init(account: activeAccount)!
                 
@@ -341,12 +341,12 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
                 metadataNet.session = k_download_session_foreground
                 metadataNet.taskStatus = Int(k_taskStatusResume)
                 
-                let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode!)
+                let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode)
                 networkingOperationQueue.addOperation(ocNetworking)
             }
         }
         
-        predicate = NSPredicate(format: "account = %@ AND directoryID = %@", activeAccount!, metadataNet.directoryID!)
+        predicate = NSPredicate(format: "account = %@ AND directoryID = %@", activeAccount, metadataNet.directoryID!)
         recordsTableMetadata = NCManageDatabase.sharedInstance.getMetadatas(predicate: predicate, sorted: "fileNamePrint", ascending: true)
         
         tableView.reloadData()
@@ -365,7 +365,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         
         if let indexPath = thumbnailInLoading[metadataNet.fileID] {
             
-            let path = "\(directoryUser!)/\(metadataNet.fileID!).ico"
+            let path = "\(directoryUser)/\(metadataNet.fileID!).ico"
             
             if FileManager.default.fileExists(atPath: path) {
                 
@@ -390,7 +390,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         metadataNet.selector = selectorDownloadThumbnail;
         metadataNet.serverUrl = self.serverUrl
         
-        let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode!)
+        let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: isCryptoCloudMode)
         networkingOperationQueue.addOperation(ocNetworking)
     }
 
@@ -424,18 +424,20 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
     func downloadFileSuccess(_ fileID: String!, serverUrl: String!, selector: String!, selectorPost: String!) {
         
         hud.hideHud()
+    
+        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID == %@", activeAccount, fileID!)) else {
+            self.dismissGrantingAccess(to: nil)
+            return
+        }
         
-        let predicate = NSPredicate(format: "account = %@ AND fileID == %@", activeAccount!, fileID!)
-        metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: predicate)
-        
-        //let metadata = CCCoreData.getMetadataWithPreficate(NSPredicate(format: "(account == '\(activeAccount!)') AND (fileID == '\(fileID!)')"), context: nil)
+        recordMetadata = metadata
         
         switch selector {
             
         case selectorLoadFileView :
             
-            let sourceUrl = URL(string: "file://\(directoryUser!)/\(fileID!)".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!
-            let destinationUrl : URL! = appGroupContainerURL()?.appendingPathComponent(metadata!.fileNamePrint)
+            let sourceUrl = URL(string: "file://\(directoryUser)/\(fileID!)".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!
+            let destinationUrl : URL! = appGroupContainerURL()?.appendingPathComponent(recordMetadata.fileNamePrint)
             
             // Destination Provider
 
@@ -458,11 +460,11 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         case selectorLoadPlist :
             
             let autoUploadFileName = NCManageDatabase.sharedInstance.getAccountAutoUploadFileName()
-            let autoUploadDirectory = NCManageDatabase.sharedInstance.getAccountAutoUploadDirectory(activeUrl!)
+            let autoUploadDirectory = NCManageDatabase.sharedInstance.getAccountAutoUploadDirectory(activeUrl)
             
-            var metadata : tableMetadata? = CCUtility.insertInformationPlist(self.metadata, directoryUser: directoryUser)!
+            var metadata : tableMetadata? = CCUtility.insertInformationPlist(recordMetadata, directoryUser: directoryUser)!
             metadata = CCUtility.insertTypeFileIconName(metadata, serverUrl: serverUrl, autoUploadFileName: autoUploadFileName, autoUploadDirectory: autoUploadDirectory)
-            metadata = NCManageDatabase.sharedInstance.updateMetadata(metadata!, activeUrl: activeUrl!)
+            metadata = NCManageDatabase.sharedInstance.updateMetadata(metadata!, activeUrl: activeUrl)
             
             if metadata != nil {
                 if metadata!.type == k_metadataType_template {
@@ -485,7 +487,7 @@ class DocumentPickerViewController: UIDocumentPickerExtensionViewController, CCN
         hud.hideHud()
         
         // remove file
-        let predicate = NSPredicate(format: "account = %@ AND fileID == %@", activeAccount!, fileID)
+        let predicate = NSPredicate(format: "account = %@ AND fileID == %@", activeAccount, fileID)
         NCManageDatabase.sharedInstance.deleteMetadata(predicate: predicate, clearDateReadDirectoryID: nil)
         
         if errorCode != -999 {
@@ -514,7 +516,7 @@ extension DocumentPickerViewController {
     
     @IBAction func encryptedButtonTapped(_ sender: AnyObject) {
 
-        parameterEncrypted = !parameterEncrypted!
+        parameterEncrypted = !parameterEncrypted
         
         if parameterEncrypted == true {
             encryptedButton.tintColor = NCBrandColor.sharedInstance.cryptocloud
@@ -536,7 +538,7 @@ extension DocumentPickerViewController {
         case .moveToService, .exportToService:
             
             let fileName = sourceURL.lastPathComponent
-            let destinationURLDirectoryUser = URL(string: "file://\(directoryUser!)/\(fileName)".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!
+            let destinationURLDirectoryUser = URL(string: "file://\(directoryUser)/\(fileName)".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!
             
             //let fileSize = (try! FileManager.default.attributesOfItem(atPath: sourceURL.path)[FileAttributeKey.size] as! NSNumber).uint64Value
             
@@ -572,14 +574,14 @@ extension DocumentPickerViewController {
                     let metadataNet = CCMetadataNet.init(account: self!.activeAccount)!
                     
                     metadataNet.action = actionUploadFile
-                    metadataNet.cryptated = self!.parameterEncrypted!
+                    metadataNet.cryptated = self!.parameterEncrypted
                     metadataNet.fileName = fileName
                     metadataNet.fileNamePrint = fileName
                     metadataNet.serverUrl = self!.serverUrl
                     metadataNet.session = k_upload_session_foreground
                     metadataNet.taskStatus = Int(k_taskStatusResume)
                     
-                    let ocNetworking : OCnetworking = OCnetworking.init(delegate: self!, metadataNet: metadataNet, withUser: self!.activeUser, withPassword: self!.activePassword, withUrl: self!.activeUrl, isCryptoCloudMode: self!.isCryptoCloudMode!)
+                    let ocNetworking : OCnetworking = OCnetworking.init(delegate: self!, metadataNet: metadataNet, withUser: self!.activeUser, withPassword: self!.activePassword, withUrl: self!.activeUrl, isCryptoCloudMode: self!.isCryptoCloudMode)
                     self!.networkingOperationQueue.addOperation(ocNetworking)
                     
                     self!.hud.visibleHudTitle(NSLocalizedString("_uploading_", comment: ""), mode: MBProgressHUDMode.determinate, color: NCBrandColor.sharedInstance.brand)
@@ -742,7 +744,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
         //let metadata = CCCoreData.insertEntity(in: recordTableMetadata)!
         
         // File Image View
-        let fileNamePath = "\(directoryUser!)/\(metadata!.fileID)).ico"
+        let fileNamePath = "\(directoryUser)/\(metadata!.fileID)).ico"
         
         if FileManager.default.fileExists(atPath: fileNamePath) {
             
@@ -776,7 +778,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
             passcode = ""
         }
         
-        let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "account = %@ AND serverUrl = %@", activeAccount!, lockServerUrl!))
+        let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "account = %@ AND serverUrl = %@", activeAccount, lockServerUrl!))
         if tableDirectory != nil {
             if metadata!.directory &&  (tableDirectory?.lock)! && (passcode?.characters.count)! > 0 {
                 cell.StatusImageView.image = UIImage(named: "passcode")
@@ -799,15 +801,15 @@ extension DocumentPickerViewController: UITableViewDataSource {
             return
         }
         
-        self.metadata = metadata!
+        recordMetadata = metadata!
 
         if metadata!.directory == false {
             
-            let fileNamePath = "\(directoryUser!)/\(metadata!.fileID)"
+            let fileNamePath = "\(directoryUser)/\(metadata!.fileID)"
             
             if FileManager.default.fileExists(atPath: fileNamePath) {
                 
-                downloadFileSuccess(self.metadata?.fileID, serverUrl: self.serverUrl!, selector: selectorLoadFileView, selectorPost: nil)
+                downloadFileSuccess(recordMetadata.fileID, serverUrl: self.serverUrl!, selector: selectorLoadFileView, selectorPost: nil)
                 
             } else {
             
@@ -823,7 +825,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
                 metadataNet.session = k_download_session_foreground
                 metadataNet.taskStatus = Int(k_taskStatusResume)
             
-                let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: self.isCryptoCloudMode!)
+                let ocNetworking : OCnetworking = OCnetworking.init(delegate: self, metadataNet: metadataNet, withUser: activeUser, withPassword: activePassword, withUrl: activeUrl, isCryptoCloudMode: self.isCryptoCloudMode)
                 networkingOperationQueue.addOperation(ocNetworking)
                 
                 hud.visibleHudTitle(NSLocalizedString("_loading_", comment: ""), mode: MBProgressHUDMode.determinate, color: NCBrandColor.sharedInstance.brand)
@@ -831,11 +833,11 @@ extension DocumentPickerViewController: UITableViewDataSource {
             
         } else {
             
-            var dir : String! = self.metadata?.fileName
+            var dir = recordMetadata.fileName
             
-            if (self.metadata?.cryptated)! {
+            if recordMetadata.cryptated {
                 
-                dir = CCUtility.trasformedFileNamePlist(inCrypto: self.metadata?.fileName)
+                dir = CCUtility.trasformedFileNamePlist(inCrypto: recordMetadata.fileName)
             }
             
             serverUrlPush = CCUtility.stringAppendServerUrl(self.serverUrl!, addFileName: dir)
@@ -845,14 +847,14 @@ extension DocumentPickerViewController: UITableViewDataSource {
                 passcode = ""
             }
             
-            let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "account = %@ AND serverUrl = %@", activeAccount!, serverUrlPush!))
+            let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate:NSPredicate(format: "account = %@ AND serverUrl = %@", activeAccount, serverUrlPush))
 
             if tableDirectory != nil {
                 
                 if (tableDirectory?.lock)! && (passcode?.characters.count)! > 0 {
                     
                     self.passcodeIsPush = true
-                    openBKPasscode(self.metadata?.fileNamePrint)
+                    openBKPasscode(recordMetadata.fileNamePrint)
                     
                 } else {
                     
@@ -876,7 +878,7 @@ extension DocumentPickerViewController: UITableViewDataSource {
         nextViewController.parameterPasscodeCorrect = parameterPasscodeCorrect
         nextViewController.parameterEncrypted = parameterEncrypted
         nextViewController.serverUrl = serverUrlPush
-        nextViewController.titleFolder = self.metadata?.fileNamePrint
+        nextViewController.titleFolder = recordMetadata.fileNamePrint
         
         self.navigationController?.pushViewController(nextViewController, animated: true)
     }