diff --git a/lib/main.dart b/lib/main.dart index 67cd369..fcf239f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:dynamic_color/dynamic_color.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:linkdy/utils/sentry_handle_error.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:receive_sharing_intent_plus/receive_sharing_intent_plus.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; @@ -57,6 +58,7 @@ void main() async { (options) { options.dsn = dotenv.env['SENTRY_DSN']; options.sendDefaultPii = false; + options.beforeSend = sentryHandleError; }, appRunner: () => startApp(), ); diff --git a/lib/utils/sentry_handle_error.dart b/lib/utils/sentry_handle_error.dart new file mode 100644 index 0000000..ef0f197 --- /dev/null +++ b/lib/utils/sentry_handle_error.dart @@ -0,0 +1,17 @@ +import 'dart:async'; + +import 'package:sentry_flutter/sentry_flutter.dart'; + +FutureOr sentryHandleError(SentryEvent event, Hint hint) async { + // Remove logs coming from the favicon library + final containsFavicon = event.exceptions + ?.where( + (e) => e.stackTrace?.frames.where((f) => f.fileName?.contains("favicon.dart") ?? false).isNotEmpty ?? false, + ) + .isNotEmpty; + if (containsFavicon == true) { + return null; + } + + return event; +}