diff --git a/lib/api.dart b/lib/api.dart index 94bdf08f..9d64d29f 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -525,6 +525,18 @@ class InvenTreeAPI { print("Data:"); print(responseData); + // Server error + if (response.statusCode >= 500) { + sentryReportMessage( + "Server error on PATCH request", + context: { + "url": _url, + "statusCode": "${response.statusCode}", + "data": responseData.toString(), + } + ); + } + return null; } @@ -660,6 +672,18 @@ class InvenTreeAPI { print("Data:"); print(responseData); + // Server error + if (response.statusCode >= 500) { + sentryReportMessage( + "Server error on POST request", + context: { + "url": _url, + "statusCode": "${response.statusCode}", + "data": responseData.toString(), + } + ); + } + return null; } @@ -863,15 +887,28 @@ class InvenTreeAPI { return null; } + var responseData = await responseToJson(response); + // Check the status code of the response if (response.statusCode != expectedStatusCode) { showStatusCodeError(response.statusCode); + + // Server error + if (response.statusCode >= 500) { + sentryReportMessage( + "Server error on GET request", + context: { + "url": url, + "statusCode": "${response.statusCode}", + "data": responseData.toString(), + } + ); + } + return null; } - var data = await responseToJson(response); - - return data; + return responseData; } Map defaultHeaders() { diff --git a/lib/inventree/sentry.dart b/lib/inventree/sentry.dart index 65a997a0..da729e0a 100644 --- a/lib/inventree/sentry.dart +++ b/lib/inventree/sentry.dart @@ -84,6 +84,40 @@ bool isInDebugMode() { return inDebugMode; } +Future sentryReportMessage(String message, {Map? context}) async { + + final server_info = getServerInfo(); + final app_info = await getAppInfo(); + final device_info = await getDeviceInfo(); + + print("Sending user message to Sentry: ${message}"); + + if (isInDebugMode()) { + + print('----- In dev mode. Not sending message to Sentry.io -----'); + return true; + } + + Sentry.configureScope((scope) { + scope.setExtra("server", server_info); + scope.setExtra("app", app_info); + scope.setExtra("device", device_info); + + if (context != null) { + scope.setExtra("context", context); + } + }); + + final sentryId = await Sentry.captureMessage(message).catchError((error) { + print("Error uploading sentry messages..."); + print(error); + return null; + }); + + return sentryId != null; +} + + Future sentryReportError(dynamic error, dynamic stackTrace) async { print('----- Sentry Intercepted error: $error -----'); @@ -115,27 +149,3 @@ Future sentryReportError(dynamic error, dynamic stackTrace) async { print("Uploaded information to Sentry.io : ${response.toString()}"); }); } - - -Future sentryReportMessage(String message) async { - - final server_info = getServerInfo(); - final app_info = await getAppInfo(); - final device_info = await getDeviceInfo(); - - print("Sending user message to Sentry"); - - Sentry.configureScope((scope) { - scope.setExtra("server", server_info); - scope.setExtra("app", app_info); - scope.setExtra("device", device_info); - }); - - final sentryId = await Sentry.captureMessage(message).catchError((error) { - print("Error uploading sentry messages..."); - print(error); - return null; - }); - - return sentryId != null; -} \ No newline at end of file