浏览代码

sendClientDiagnosticsRemoteOperation

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 1 年之前
父节点
当前提交
aeeb5ef47d

+ 19 - 15
iOSClient/Data/NCManageDatabase+Problems.swift

@@ -29,25 +29,26 @@ class tableProblems: Object {
 
     @Persisted var account = ""
     @Persisted(primaryKey: true) var primaryKey = ""
-    @Persisted var type: String = ""
+    @Persisted var selector: String = ""
     @Persisted var count: Int = 0
     @Persisted var oldest: Double = 0
 }
 
 extension NCManageDatabase {
 
-    func addProblem(account: String, type: String, error: NKError) {
+    func addProblem(account: String, selector: String, error: NKError) {
 
         do {
             let realm = try Realm()
+            let primaryKey = account + selector
             try realm.write {
-                let primaryKey = account + type
-                if let result = realm.objects(tableProblems.self).filter("primaryKey %@", primaryKey).first {
+                if let result = realm.objects(tableProblems.self).filter("primaryKey == %@", primaryKey).first {
                     result.count += 1
                     result.oldest = Date().timeIntervalSince1970
                     realm.add(result, update: .all)
                 } else {
                     let result = tableProblems()
+                    result.primaryKey = primaryKey
                     result.count = 1
                     result.oldest = Date().timeIntervalSince1970
                     realm.add(result, update: .all)
@@ -58,6 +59,20 @@ extension NCManageDatabase {
         }
     }
 
+    func deleteProblem(account: String, selector: String) {
+
+        do {
+            let realm = try Realm()
+            let primaryKey = account + selector
+            try realm.write {
+                let result = realm.objects(tableProblems.self).filter("primaryKey == %@", primaryKey)
+                realm.delete(result)
+            }
+        } catch let error {
+            NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
+        }
+    }
+
     func getProblems(account: String) -> Results<tableProblems>? {
 
         do {
@@ -71,16 +86,5 @@ extension NCManageDatabase {
         return nil
     }
 
-    func deleteProblems(account: String) {
 
-        do {
-            let realm = try Realm()
-            try realm.write {
-                let result = realm.objects(tableProblems.self).filter("account == %@", account)
-                realm.delete(result)
-            }
-        } catch let error {
-            NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
-        }
-    }
 }

+ 15 - 5
iOSClient/Networking/NCNetworking.swift

@@ -432,8 +432,11 @@ class NCNetworking: NSObject, NKCommonDelegate {
             if withUploadComplete, let uploadTask = uploadTask {
                 self.uploadComplete(fileName: metadata.fileName, serverUrl: metadata.serverUrl, ocId: ocId, etag: etag, date: date, size: size, description: description, task: uploadTask, error: error)
             }
-            if error != .success {
-                NCManageDatabase.shared.addProblem(account: account, type: "UploadResult", error: error)
+            // sendClientDiagnosticsRemoteOperation
+            if error == .success {
+                NCManageDatabase.shared.deleteProblem(account: account, selector: NCGlobal.shared.selectorUploadFile)
+            } else {
+                NCManageDatabase.shared.addProblem(account: account, selector: NCGlobal.shared.selectorUploadFile, error: error)
             }
             completion(account, ocId, etag, date, size, allHeaderFields, afError, error)
         }
@@ -507,10 +510,12 @@ class NCNetworking: NSObject, NKCommonDelegate {
 
             self.uploadRequest.removeValue(forKey: fileNameLocalPath)
 
+            // sendClientDiagnosticsRemoteOperation
             if error == .success {
                 NCManageDatabase.shared.deleteChunks(account: account, ocId: metadata.ocId, directory: directory)
+                NCManageDatabase.shared.deleteProblem(account: account, selector: NCGlobal.shared.selectorUploadFile)
             } else {
-                NCManageDatabase.shared.addProblem(account: account, type: "UploadResult", error: error)
+                NCManageDatabase.shared.addProblem(account: account, selector: NCGlobal.shared.selectorUploadFile, error: error)
             }
 
             switch error.errorCode {
@@ -598,6 +603,13 @@ class NCNetworking: NSObject, NKCommonDelegate {
         isApplicationStateActive = UIApplication.shared.applicationState == .active
 #endif
 
+        // sendClientDiagnosticsRemoteOperation
+        if error == .success {
+            NCManageDatabase.shared.deleteProblem(account: metadata.account, selector: NCGlobal.shared.selectorUploadFile)
+        } else {
+            NCManageDatabase.shared.addProblem(account: metadata.account, selector: NCGlobal.shared.selectorUploadFile, error: error)
+        }
+
         if error == .success, let ocId = ocId, size == metadata.size {
 
             let metadata = tableMetadata.init(value: metadata)
@@ -644,7 +656,6 @@ class NCNetworking: NSObject, NKCommonDelegate {
 
             } else if error.errorCode == NCGlobal.shared.errorForbidden && isApplicationStateActive {
 #if !EXTENSION
-                NCManageDatabase.shared.addProblem(account: metadata.account, type: "UploadResult", error: error)
                 DispatchQueue.main.async {
                     let newFileName = NCUtilityFileSystem.shared.createFileName(metadata.fileName, serverUrl: metadata.serverUrl, account: metadata.account)
                     let alertController = UIAlertController(title: error.errorDescription, message: NSLocalizedString("_change_upload_filename_", comment: ""), preferredStyle: .alert)
@@ -669,7 +680,6 @@ class NCNetworking: NSObject, NKCommonDelegate {
 #endif
             } else {
 
-                NCManageDatabase.shared.addProblem(account: metadata.account, type: "UploadResult", error: error)
                 NCManageDatabase.shared.setMetadataSession(ocId: metadata.ocId, session: nil, sessionError: error.errorDescription, sessionTaskIdentifier: 0, status: NCGlobal.shared.metadataStatusUploadError)
                 NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadedFile, userInfo: ["ocId": metadata.ocId, "serverUrl": metadata.serverUrl, "account": metadata.account, "fileName": metadata.fileName, "ocIdTemp": ocIdTemp, "error": error])
             }

+ 1 - 1
iOSClient/Networking/NCService.swift

@@ -322,7 +322,7 @@ class NCService: NSObject {
             let problems = "{\"problems\":{\"conflict\":{\"count\":3,\"oldest\":1695592800},\"failed-upload\":{\"count\":1,\"oldest\":1695592900}}}"
             NextcloudKit.shared.sendClientDiagnosticsRemoteOperation(problems: problems) { _, error in
                 if error == .success {
-                    NCManageDatabase.shared.deleteProblems(account: account)
+                    //NCManageDatabase.shared.deleteProblems(account: account)
                 }
             }
         }