diff --git a/xdrip/Managers/NightScout/NightScoutUploadManager.swift b/xdrip/Managers/NightScout/NightScoutUploadManager.swift index 981b2a1c..87aa3868 100644 --- a/xdrip/Managers/NightScout/NightScoutUploadManager.swift +++ b/xdrip/Managers/NightScout/NightScoutUploadManager.swift @@ -1047,7 +1047,8 @@ public class NightScoutUploadManager: NSObject { uploadDataAndGetResponse(dataToUpload: dataToUpload, httpMethod: httpMethod, path: path) { _, nightScoutResult in - if let completionHandler = completionHandler { + // completion handler to be called only if upload as successful + if let completionHandler = completionHandler, nightScoutResult.successFull() { completionHandler() @@ -1139,6 +1140,9 @@ public class NightScoutUploadManager: NSObject { // error cases if let error = error { trace(" failed to upload, error = %{public}@", log: self.oslog, category: ConstantsLog.categoryNightScoutUploadManager, type: .error, error.localizedDescription) + + nightScoutResult = NightScoutResult.failed + return } @@ -1178,18 +1182,26 @@ public class NightScoutUploadManager: NSObject { } } catch { - // json decode fails, upload will be considered as failed + // json decode fails, upload will be considered as failed + nightScoutResult = NightScoutResult.failed + return } } trace(" failed to upload, statuscode = %{public}@", log: self.oslog, category: ConstantsLog.categoryNightScoutUploadManager, type: .error, response.statusCode.description) + nightScoutResult = NightScoutResult.failed + return } } else { trace(" response is not HTTPURLResponse", log: self.oslog, category: ConstantsLog.categoryNightScoutUploadManager, type: .error) + + nightScoutResult = NightScoutResult.failed + + return } // successful cases @@ -1220,6 +1232,8 @@ public class NightScoutUploadManager: NSObject { trace(" error : %{public}@", log: self.oslog, category: ConstantsLog.categoryNightScoutUploadManager, type: .info, error.localizedDescription) + completionHandler(nil, NightScoutResult.failed) + } }