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

Error fixes / catches

- Barcode scan returns invalid response
- model.reload() returns invalid response
- model.create() returns invalid response
- model.get() returns invalid response
This commit is contained in:
Oliver 2021-08-05 08:37:11 +10:00
parent ca73ff0d35
commit ca35f44dc8
2 changed files with 59 additions and 11 deletions

View File

@ -1,4 +1,5 @@
import 'package:inventree/app_settings.dart'; import 'package:inventree/app_settings.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/widget/dialogs.dart'; import 'package:inventree/widget/dialogs.dart';
import 'package:inventree/widget/snacks.dart'; import 'package:inventree/widget/snacks.dart';
import 'package:audioplayers/audioplayers.dart'; import 'package:audioplayers/audioplayers.dart';
@ -98,18 +99,28 @@ class BarcodeHandler {
expectedStatusCode: 200 expectedStatusCode: 200
); );
if (!response.isValid()) {
return;
}
if (response.data.containsKey('error')) {
_controller?.resumeCamera(); _controller?.resumeCamera();
// Handle strange response from the server
if (!response.isValid() || response.data == null || !(response.data is Map)) {
onBarcodeUnknown(context, {});
// We want to know about this one!
await sentryReportMessage(
"BarcodeHandler.processBarcode returned strange value",
context: {
"data": response.data?.toString() ?? "null",
"barcode": barcode,
"url": url,
"statusCode": response.statusCode.toString(),
"valid": response.isValid().toString(),
}
);
} else if (response.data.containsKey('error')) {
onBarcodeUnknown(context, response.data); onBarcodeUnknown(context, response.data);
} else if (response.data.containsKey('success')) { } else if (response.data.containsKey('success')) {
_controller?.resumeCamera();
onBarcodeMatched(context, response.data); onBarcodeMatched(context, response.data);
} else { } else {
_controller?.resumeCamera();
onBarcodeUnhandled(context, response.data); onBarcodeUnhandled(context, response.data);
} }
} }

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'package:inventree/api.dart'; import 'package:inventree/api.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
@ -148,8 +149,21 @@ class InvenTreeModel {
var response = await api.get(url, params: defaultGetFilters(), expectedStatusCode: 200); var response = await api.get(url, params: defaultGetFilters(), expectedStatusCode: 200);
if (!response.isValid()) { if (!response.isValid() || response.data == null || !(response.data is Map)) {
// Report error
await sentryReportMessage(
"InvenTreeModel.reload() returned invalid response",
context: {
"url": url,
"statusCode": response.statusCode.toString(),
"data": response.data?.toString() ?? "null",
"valid": response.isValid().toString(),
}
);
return false; return false;
} }
jsondata = response.data; jsondata = response.data;
@ -200,8 +214,20 @@ class InvenTreeModel {
var response = await api.get(url, params: params); var response = await api.get(url, params: params);
if (!response.isValid()) { if (!response.isValid() || response.data == null || !(response.data is Map)) {
await sentryReportMessage(
"InvenTreeModel.get() returned invalid response",
context: {
"url": url,
"statusCode": response.statusCode.toString(),
"data": response.data?.toString() ?? "null",
"valid": response.isValid().toString()
}
);
return null; return null;
} }
return createFromJson(response.data); return createFromJson(response.data);
@ -222,7 +248,18 @@ class InvenTreeModel {
var response = await api.post(URL, body: data); var response = await api.post(URL, body: data);
// Invalid response returned from server // Invalid response returned from server
if (!response.isValid()) { if (!response.isValid() || response.data == null || !(response.data is Map)) {
await sentryReportMessage(
"InvenTreeModel.create() returned invalid response",
context: {
"url": url,
"statusCode": response.statusCode.toString(),
"data": response.data?.toString() ?? "null",
"valid": response.isValid().toString(),
}
);
return null; return null;
} }