|
@@ -23,11 +23,6 @@
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
-@objc protocol CCActionsDeleteDelegate {
|
|
|
-
|
|
|
- func deleteFileOrFolderSuccessFailure(_ metadataNet: CCMetadataNet, message: NSString, errorCode: NSInteger)
|
|
|
-}
|
|
|
-
|
|
|
@objc protocol CCActionsRenameDelegate {
|
|
|
|
|
|
func renameSuccess(_ metadataNet: CCMetadataNet)
|
|
@@ -67,157 +62,6 @@ class CCActions: NSObject {
|
|
|
override init() {
|
|
|
}
|
|
|
|
|
|
- // --------------------------------------------------------------------------------------------
|
|
|
- // MARK: Delete File or Folder
|
|
|
- // --------------------------------------------------------------------------------------------
|
|
|
-
|
|
|
- @objc func deleteFileOrFolder(_ metadata: tableMetadata,delegate: AnyObject, hud: CCHud?, hudTitled: String?) {
|
|
|
-
|
|
|
- guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- let isDirectory = metadata.directory
|
|
|
- let directoryID = metadata.directoryID
|
|
|
- let fileID = metadata.fileID
|
|
|
- let fileName = metadata.fileName
|
|
|
- let fileNameView = metadata.fileNameView
|
|
|
-
|
|
|
- // fix CCActions.swift line 88 2.17.2 (00005)
|
|
|
- if (serverUrl == "") {
|
|
|
- appDelegate.messageNotification("_delete_", description: "_file_not_found_reload_", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: Int(k_CCErrorInternalError))
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- DispatchQueue.global().async {
|
|
|
-
|
|
|
- // E2EE LOCK
|
|
|
- let tableE2eEncryption = NCManageDatabase.sharedInstance.getE2eEncryption(predicate: NSPredicate(format: "account == %@ AND fileNameIdentifier == %@", self.appDelegate.activeAccount, fileName))
|
|
|
- if tableE2eEncryption != nil {
|
|
|
-
|
|
|
- guard let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.activeAccount, serverUrl)) else {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- let error = NCNetworkingEndToEnd.sharedManager().lockFolderEncrypted(onServerUrl: serverUrl, fileID: tableDirectory.fileID, user: self.appDelegate.activeUser, userID: self.appDelegate.activeUserID, password: self.appDelegate.activePassword, url: self.appDelegate.activeUrl)
|
|
|
- if error != nil {
|
|
|
- DispatchQueue.main.async {
|
|
|
- self.appDelegate.messageNotification("_delete_", description: error!.localizedDescription, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: Int(k_CCErrorInternalError))
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- let metadataNet: CCMetadataNet = CCMetadataNet.init(account: self.appDelegate.activeAccount)
|
|
|
-
|
|
|
- metadataNet.action = actionDeleteFileDirectory
|
|
|
- metadataNet.delegate = delegate
|
|
|
- metadataNet.directory = isDirectory
|
|
|
- metadataNet.directoryID = directoryID
|
|
|
- metadataNet.fileID = fileID
|
|
|
- metadataNet.fileName = fileName
|
|
|
- metadataNet.fileNameView = fileNameView
|
|
|
- metadataNet.selector = selectorDelete
|
|
|
- metadataNet.serverUrl = serverUrl
|
|
|
-
|
|
|
- self.appDelegate.addNetworkingOperationQueue(self.appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
|
|
-
|
|
|
- if hud != nil {
|
|
|
- DispatchQueue.main.async {
|
|
|
- hud?.visibleHudTitle(hudTitled, mode: MBProgressHUDMode.indeterminate, color: nil)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @objc func deleteFileOrFolderSuccessFailure(_ metadataNet: CCMetadataNet, message: NSString, errorCode: NSInteger) {
|
|
|
-
|
|
|
- if (errorCode == 0) {
|
|
|
-
|
|
|
- do {
|
|
|
- try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageFileID(metadataNet.fileID))
|
|
|
- } catch { }
|
|
|
-
|
|
|
- NCManageDatabase.sharedInstance.deletePhotos(fileID: metadataNet.fileID)
|
|
|
- appDelegate.activePhotos.fileIDHide.add(metadataNet.fileID)
|
|
|
- NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID))
|
|
|
- // E2EE (if exists the record)
|
|
|
- NCManageDatabase.sharedInstance.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", metadataNet.account, metadataNet.serverUrl, metadataNet.fileName))
|
|
|
-
|
|
|
- guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID)) else {
|
|
|
- self.deleteFileOrFolderSuccessFailure(metadataNet, message: "", errorCode: 0)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID), clearDateReadDirectoryID: metadata.directoryID)
|
|
|
-
|
|
|
- if metadata.directory {
|
|
|
- let dirForDelete = CCUtility.stringAppendServerUrl(metadataNet.serverUrl, addFileName: metadata.fileName)
|
|
|
- NCManageDatabase.sharedInstance.deleteDirectoryAndSubDirectory(serverUrl: dirForDelete!)
|
|
|
- }
|
|
|
-
|
|
|
- guard let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", self.appDelegate.activeAccount, metadataNet.serverUrl)) else {
|
|
|
- self.deleteFileOrFolderSuccessFailure(metadataNet, message: "", errorCode: 0)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // E2EE Rebuild and send Metadata
|
|
|
- if tableDirectory.e2eEncrypted {
|
|
|
-
|
|
|
- DispatchQueue.global().async {
|
|
|
-
|
|
|
- // Send Metadata
|
|
|
- let error = NCNetworkingEndToEnd.sharedManager().rebuildAndSendMetadata(onServerUrl: metadataNet.serverUrl, account: self.appDelegate.activeAccount, user: self.appDelegate.activeUser, userID: self.appDelegate.activeUserID, password: self.appDelegate.activePassword, url: self.appDelegate.activeUrl) as NSError?
|
|
|
-
|
|
|
- DispatchQueue.main.async {
|
|
|
- if (error == nil) {
|
|
|
- metadataNet.delegate?.deleteFileOrFolderSuccessFailure(metadataNet, message: "", errorCode: 0)
|
|
|
- } else {
|
|
|
- self.deleteFileOrFolderSuccessFailure(metadataNet, message: error!.localizedDescription as NSString, errorCode: error!.code)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- metadataNet.delegate?.deleteFileOrFolderSuccessFailure(metadataNet, message: "", errorCode: 0)
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- if errorCode == 404 {
|
|
|
-
|
|
|
- do {
|
|
|
- try FileManager.default.removeItem(atPath: CCUtility.getDirectoryProviderStorageFileID(metadataNet.fileID))
|
|
|
- } catch { }
|
|
|
-
|
|
|
- NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID))
|
|
|
- NCManageDatabase.sharedInstance.deletePhotos(fileID: metadataNet.fileID)
|
|
|
- appDelegate.activePhotos.fileIDHide.add(metadataNet.fileID)
|
|
|
- // E2EE (if exists the record)
|
|
|
- NCManageDatabase.sharedInstance.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", metadataNet.account, metadataNet.serverUrl, metadataNet.fileName))
|
|
|
-
|
|
|
- guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID)) else {
|
|
|
- self.deleteFileOrFolderSuccessFailure(metadataNet, message: "", errorCode: 0)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadataNet.fileID), clearDateReadDirectoryID: metadata.directoryID)
|
|
|
-
|
|
|
- if metadata.directory {
|
|
|
- let dirForDelete = CCUtility.stringAppendServerUrl(metadataNet.serverUrl, addFileName: metadata.fileName)
|
|
|
- NCManageDatabase.sharedInstance.deleteDirectoryAndSubDirectory(serverUrl: dirForDelete!)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if message.length > 0 {
|
|
|
-
|
|
|
- appDelegate.messageNotification("_delete_", description: message as String, visible: true, delay:TimeInterval(k_dismissAfterSecond), type:TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
- }
|
|
|
-
|
|
|
- metadataNet.delegate?.deleteFileOrFolderSuccessFailure(metadataNet, message: message, errorCode: errorCode)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
// --------------------------------------------------------------------------------------------
|
|
|
// MARK: Rename File or Folder
|
|
|
// --------------------------------------------------------------------------------------------
|