diff --git a/lib/api.dart b/lib/api.dart index 02490cba..94bdf08f 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:InvenTree/inventree/sentry.dart'; import 'package:InvenTree/user_profile.dart'; import 'package:InvenTree/widget/snacks.dart'; import 'package:flutter/cupertino.dart'; @@ -11,6 +12,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:InvenTree/widget/dialogs.dart'; import 'package:InvenTree/l10.dart'; +import 'package:InvenTree/inventree/sentry.dart'; import 'package:http/http.dart' as http; import 'package:one_context/one_context.dart'; @@ -445,7 +447,7 @@ class InvenTreeAPI { // Open a connection to the server HttpClientRequest request = await client.patchUrl(uri) .timeout(Duration(seconds: 10)) - .catchError((error) { + .catchError((error, stackTrace) { print("PATCH request return error"); print("URL: ${uri}"); print("Error: ${error.toString()}"); @@ -464,6 +466,8 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; @@ -486,7 +490,7 @@ class InvenTreeAPI { HttpClientResponse response = await request.close() .timeout(Duration(seconds: 30)) - .catchError((error) { + .catchError((error, stackTrace) { print("PATCH request returned error"); print("URL: ${_url}"); print("Error: ${error.toString()}"); @@ -505,6 +509,8 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; @@ -574,7 +580,7 @@ class InvenTreeAPI { // Open a connection to the server HttpClientRequest request = await client.postUrl(uri) .timeout(Duration(seconds: 10)) - .catchError((error) { + .catchError((error, stackTrace) { print("POST request returned error"); print("URL: ${uri}"); print("Error: ${error.toString()}"); @@ -593,6 +599,8 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; @@ -612,7 +620,7 @@ class InvenTreeAPI { HttpClientResponse response = await request.close() .timeout(Duration(seconds: 30)) - .catchError((error) { + .catchError((error, stackTrace) { print("POST request returned error"); print("URL: ${_url}"); print("Error: ${error.toString()}"); @@ -631,6 +639,8 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; @@ -729,7 +739,7 @@ class InvenTreeAPI { // Open a connection request = await client.getUrl(uri) .timeout(Duration(seconds: 10)) - .catchError((error) { + .catchError((error, stackTrace) { print("GET request returned error"); print("URL: ${uri}"); print("Error: ${error.toString()}"); @@ -748,11 +758,13 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; }); - } catch (error) { + } catch (error, stackTrace) { if (error is FormatException) { showServerError( L10().invalidHost, @@ -768,6 +780,9 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + // Report to sentry + sentryReportError(error, stackTrace); } return null; @@ -783,7 +798,7 @@ class InvenTreeAPI { HttpClientResponse response = await request.close() .timeout(Duration(seconds: 10)) - .catchError((error) { + .catchError((error, stackTrace) { print("GET request returned error"); print("URL: ${_url}"); print("Error: ${error.toString()}"); @@ -802,6 +817,8 @@ class InvenTreeAPI { L10().serverError, error.toString() ); + + sentryReportError(error, stackTrace); } return null; diff --git a/lib/widget/category_display.dart b/lib/widget/category_display.dart index d8b74e60..3f4533d3 100644 --- a/lib/widget/category_display.dart +++ b/lib/widget/category_display.dart @@ -2,6 +2,7 @@ import 'package:InvenTree/api.dart'; import 'package:InvenTree/app_settings.dart'; import 'package:InvenTree/inventree/part.dart'; +import 'package:InvenTree/inventree/sentry.dart'; import 'package:InvenTree/widget/progress.dart'; import 'package:InvenTree/l10.dart'; @@ -437,9 +438,11 @@ class _PaginatedPartListState extends State { resultCount = pageCount; }); - } catch (error) { + } catch (error, stackTrace) { print("Error! - ${error.toString()}"); _pagingController.error = error; + + sentryReportError(error, stackTrace); } } diff --git a/lib/widget/location_display.dart b/lib/widget/location_display.dart index 94404cee..3e378f6b 100644 --- a/lib/widget/location_display.dart +++ b/lib/widget/location_display.dart @@ -1,6 +1,7 @@ import 'package:InvenTree/api.dart'; import 'package:InvenTree/app_settings.dart'; import 'package:InvenTree/barcode.dart'; +import 'package:InvenTree/inventree/sentry.dart'; import 'package:InvenTree/inventree/stock.dart'; import 'package:InvenTree/widget/progress.dart'; @@ -497,8 +498,10 @@ class _PaginatedStockListState extends State { resultCount = pageCount; }); - } catch (error) { + } catch (error, stackTrace) { _pagingController.error = error; + + sentryReportError(error, stackTrace); } }