Bladeren bron

clear code

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 jaren geleden
bovenliggende
commit
5f7c47ca8a

+ 22 - 47
iOSClient/Networking/E2EE/NCNetworkingE2EECreateFolder.swift

@@ -37,64 +37,38 @@ class NCNetworkingE2EECreateFolder: NSObject {
         var fileNameFolder = CCUtility.removeForbiddenCharactersServer(fileName)!
         var serverUrlFileName = ""
         var fileNameIdentifier = ""
+        var error = NKError()
 
         fileNameFolder = NCUtilityFileSystem.shared.createFileName(fileNameFolder, serverUrl: serverUrl, account: account)
-        if fileNameFolder.isEmpty {
-            return NKError()
-        }
+        if fileNameFolder.isEmpty { return error }
         fileNameIdentifier = NCNetworkingE2EE.shared.generateRandomIdentifier()
         serverUrlFileName = serverUrl + "/" + fileNameIdentifier
 
         // Lock
         let lockResults = await NCNetworkingE2EE.shared.lock(account: account, serverUrl: serverUrl)
+        error = lockResults.error
+        if error == .success, let e2eToken = lockResults.e2eToken {
 
-        if lockResults.error == .success, let e2eToken = lockResults.e2eToken {
-
-            let options = NKRequestOptions(customHeader: ["e2e-token": e2eToken])
-            let createFolderResults = await NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, options: options)
-
-            if createFolderResults.error == .success {
-                guard let fileId = NCUtility.shared.ocIdToFileId(ocId: createFolderResults.ocId) else {
-                    // unlock
-                    if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                        await NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE")
-                    }
-                    return NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "Error convert ocId")
-                }
-
+            let createFolderResults = await NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, options: NKRequestOptions(customHeader: ["e2e-token": e2eToken]))
+            error = createFolderResults.error
+            if error == .success, let fileId = NCUtility.shared.ocIdToFileId(ocId: createFolderResults.ocId) {
                 // Mark folder as E2EE
                 let markE2EEFolderResults = await NextcloudKit.shared.markE2EEFolder(fileId: fileId, delete: false)
-
-                if markE2EEFolderResults.error == .success {
-
+                error = markE2EEFolderResults.error
+                if error == .success {
                     let sendE2EMetadataResults = await createE2Ee(account: account, fileNameFolder: fileNameFolder, fileNameIdentifier: fileNameIdentifier, serverUrl: serverUrl, urlBase: urlBase, userId: userId)
-
-                    // Unlock
-                    if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                        await NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE")
-                    }
-
+                    error = sendE2EMetadataResults.error
                     if sendE2EMetadataResults.error == .success, let ocId = createFolderResults.ocId {
                         NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterCreateFolder, userInfo: ["ocId": ocId, "serverUrl": serverUrl, "account": account, "e2ee": true])
                     }
-
-                    return sendE2EMetadataResults.error
-
-                } else {
-
-                    // Unlock
-                    if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                        await NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE")
-                    }
-
-                    return markE2EEFolderResults.error
                 }
-            } else {
-                return createFolderResults.error
             }
-        } else {
-            return lockResults.error
+
+            // Unlock
+            await NCNetworkingE2EE.shared.unlock(account: account, serverUrl: serverUrl)
         }
+
+        return error
     }
 
     private func createE2Ee(account: String, fileNameFolder: String, fileNameIdentifier: String, serverUrl: String, urlBase: String, userId: String) async -> (e2eToken: String?, error: NKError) {
@@ -130,27 +104,28 @@ class NCNetworkingE2EECreateFolder: NSObject {
     func createFolderAndMarkE2EE(fileName: String, serverUrl: String) async -> NKError {
 
         let serverUrlFileName = serverUrl + "/" + fileName
+        var error = NKError()
+
         let createFolderResults = await NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName)
         if createFolderResults.error != .success { return createFolderResults.error }
 
         let readFileOrFolderResults = await NextcloudKit.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: "0")
-        if readFileOrFolderResults.error == .success, let file = readFileOrFolderResults.files.first {
+        error = readFileOrFolderResults.error
+        if error == .success, let file = readFileOrFolderResults.files.first {
 
             let markE2EEFolderResults = await NextcloudKit.shared.markE2EEFolder(fileId: file.fileId, delete: false)
             if markE2EEFolderResults.error != .success { return markE2EEFolderResults.error }
 
             file.e2eEncrypted = true
             guard let metadata = NCManageDatabase.shared.addMetadata(NCManageDatabase.shared.convertNCFileToMetadata(file, account: readFileOrFolderResults.account)) else {
-                return NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_internal_generic_error_")
+                return error
             }
             NCManageDatabase.shared.addDirectory(encrypted: true, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrlFileName, account: metadata.account)
             NCManageDatabase.shared.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, serverUrlFileName))
 
             NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterChangeStatusFolderE2EE, userInfo: ["serverUrl": serverUrl])
-
-            return markE2EEFolderResults.error
-        } else {
-            return readFileOrFolderResults.error
         }
+
+        return error
     }
 }

+ 10 - 6
iOSClient/Networking/E2EE/NCNetworkingE2EEDelete.swift

@@ -34,6 +34,8 @@ class NCNetworkingE2EEDelete: NSObject {
 
     func delete(metadata: tableMetadata) async -> (NKError) {
 
+        var error = NKError()
+
         func sendE2EMetadata(e2eToken: String, directory: tableDirectory) async -> (NKError) {
 
             var e2eMetadataNew: String?
@@ -64,17 +66,19 @@ class NCNetworkingE2EEDelete: NSObject {
 
         // Lock
         let lockResults = await NCNetworkingE2EE.shared.lock(account: metadata.account, serverUrl: metadata.serverUrl)
+        if lockResults.error != .success { error = lockResults.error}
         if lockResults.error == .success, let e2eToken = lockResults.e2eToken, let directory = lockResults.directory {
 
-            var error = await NCNetworking.shared.deleteMetadataPlain(metadata, customHeader: ["e2e-token": e2eToken])
-            if error == .success {
-                error = await sendE2EMetadata(e2eToken: e2eToken, directory: directory)
+            let deleteMetadataPlainError = await NCNetworking.shared.deleteMetadataPlain(metadata, customHeader: ["e2e-token": e2eToken])
+            if deleteMetadataPlainError != .success { error = deleteMetadataPlainError }
+            if deleteMetadataPlainError == .success {
+                let sendE2EMetadataError = await sendE2EMetadata(e2eToken: e2eToken, directory: directory)
+                if sendE2EMetadataError != .success { error = sendE2EMetadataError }
             }
             // Unlock
             await NCNetworkingE2EE.shared.unlock(account: metadata.account, serverUrl: metadata.serverUrl)
-            return error
-        } else {
-            return lockResults.error
         }
+
+        return error
     }
 }

+ 7 - 7
iOSClient/Networking/E2EE/NCNetworkingE2EERename.swift

@@ -34,6 +34,8 @@ class NCNetworkingE2EERename: NSObject {
 
     func rename(metadata: tableMetadata, fileNameNew: String) async -> (NKError) {
 
+        var error = NKError()
+
         func sendE2EMetadata(e2eToken: String, directory: tableDirectory) async -> (NKError) {
 
             var e2eMetadataNew: String?
@@ -68,16 +70,16 @@ class NCNetworkingE2EERename: NSObject {
 
         // Lock
         let lockResults = await NCNetworkingE2EE.shared.lock(account: metadata.account, serverUrl: metadata.serverUrl)
-        if lockResults.error == .success, let e2eToken = lockResults.e2eToken, let directory = lockResults.directory {
+        error = lockResults.error
+        if error == .success, let e2eToken = lockResults.e2eToken, let directory = lockResults.directory {
 
-            let error = await sendE2EMetadata(e2eToken: e2eToken, directory: directory)
+            let sendE2EMetadataError = await sendE2EMetadata(e2eToken: e2eToken, directory: directory)
+            error = sendE2EMetadataError
             if error == .success {
                 NCManageDatabase.shared.setMetadataFileNameView(serverUrl: metadata.serverUrl, fileName: metadata.fileName, newFileNameView: fileNameNew, account: metadata.account)
-
                 // Move file system
                 let atPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId) + "/" + metadata.fileNameView
                 let toPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId) + "/" + fileNameNew
-
                 do {
                     try FileManager.default.moveItem(atPath: atPath, toPath: toPath)
                 } catch { }
@@ -86,9 +88,7 @@ class NCNetworkingE2EERename: NSObject {
 
             // Unlock
             await NCNetworkingE2EE.shared.unlock(account: metadata.account, serverUrl: metadata.serverUrl)
-
-            return error
         }
-        return lockResults.error
+        return error
     }
 }

+ 2 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -778,6 +778,8 @@
 "_not_connected_internet_"              = "Server connection error";
 "_not_possible_connect_to_server_"      = "It is not possible to connect to the server at this time";
 "_not_possible_create_folder_"          = "Folder could not be created";
+"_not_possible_delete_file_"            = "File could not be delete";
+"_not_possible_rename_file_"            = "File could not be renamed";
 "_server_down_"                         = "Could not establish contact with server";
 "_time_out_"                            = "Timeout, try again";
 "_unknow_response_server_"              = "Unexpected response from server";