2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00

Refactor sentry error reporting for model class

This commit is contained in:
Oliver Walters 2022-05-10 18:16:15 +10:00
parent 7c36659fe9
commit 610f6533d0

View File

@ -233,6 +233,32 @@ class InvenTreeModel {
return {}; return {};
} }
Future<void> reportModelError(String title, APIResponse response, {Map<String, String> context = {}}) async {
String dataString = response.data?.toString() ?? "null";
if (dataString.length > 500) {
dataString = dataString.substring(0, 500);
}
// Add some default context data
context["url"] = response.url.toString();
context["statusCode"] = response.statusCode.toString();
context["responseData"] = dataString;
context["valid"] = response.isValid().toString();
context["error"] = response.error;
context["errorDetail"] = response.errorDetail;
context["isNull"] = response.data == null ? "true" : "false";
context["dataType"] = response.data?.runtimeType.toString() ?? "null";
context["model"] = URL;
await sentryReportMessage(
title,
context: context,
);
}
/// Delete the instance on the remote server /// Delete the instance on the remote server
/// Returns true if the operation was successful, else false /// Returns true if the operation was successful, else false
Future<bool> delete() async { Future<bool> delete() async {
@ -240,18 +266,10 @@ class InvenTreeModel {
if (!response.isValid() || response.data == null || (response.data is! Map)) { if (!response.isValid() || response.data == null || (response.data is! Map)) {
if (response.statusCode > 0) { reportModelError(
await sentryReportMessage( "InvenTreeModel.delete() returned invalid response",
"InvenTreeModel.delete() returned invalid response", response,
context: { );
"url": url,
"statusCode": response.statusCode.toString(),
"data": response.data?.toString() ?? "null",
"error": response.error,
"errorDetail": response.errorDetail,
}
);
}
showServerError( showServerError(
L10().serverError, L10().serverError,
@ -274,20 +292,13 @@ class InvenTreeModel {
if (!response.isValid() || response.data == null || (response.data is! Map)) { if (!response.isValid() || response.data == null || (response.data is! Map)) {
// Report error reportModelError(
if (response.statusCode > 0) { "InvenTreeModel.reload() returned invalid response",
await sentryReportMessage( response,
"InvenTreeModel.reload() returned invalid response", context: {
context: { "pk": pk.toString(),
"url": url, }
"statusCode": response.statusCode.toString(), );
"data": response.data?.toString() ?? "null",
"valid": response.isValid().toString(),
"error": response.error,
"errorDetail": response.errorDetail,
},
);
}
showServerError( showServerError(
L10().serverError, L10().serverError,
@ -347,19 +358,15 @@ class InvenTreeModel {
if (!response.isValid() || response.data == null || response.data is! Map) { if (!response.isValid() || response.data == null || response.data is! Map) {
if (response.statusCode > 0) { // Report error
await sentryReportMessage( reportModelError(
"InvenTreeModel.get() returned invalid response", "InvenTreeModel.getModel() returned invalid response",
context: { response,
"url": url, context: {
"statusCode": response.statusCode.toString(), "filters": filters.toString(),
"data": response.data?.toString() ?? "null", "pk": pk,
"valid": response.isValid().toString(), }
"error": response.error, );
"errorDetail": response.errorDetail,
}
);
}
showServerError( showServerError(
L10().serverError, L10().serverError,
@ -394,26 +401,19 @@ class InvenTreeModel {
// Invalid response returned from server // Invalid response returned from server
if (!response.isValid() || response.data == null || response.data is! Map) { if (!response.isValid() || response.data == null || response.data is! Map) {
if (response.statusCode > 0) { reportModelError(
await sentryReportMessage( "InvenTreeModel.create() returned invalid response",
"InvenTreeModel.create() returned invalid response", response,
context: { context: {
"url": url, "pk": pk.toString(),
"statusCode": response.statusCode.toString(), }
"data": response.data?.toString() ?? "null", );
"valid": response.isValid().toString(),
"error": response.error,
"errorDetail": response.errorDetail,
}
);
}
showServerError( showServerError(
L10().serverError, L10().serverError,
L10().errorCreate, L10().errorCreate,
); );
return null; return null;
} }