diff --git a/lib/app.dart b/lib/app.dart index 07b7b9b3..4626e8c5 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -15,6 +15,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/analytics.dart'; @@ -307,6 +308,7 @@ class _JournalAppState extends State { navigatorObservers: [ AnalyticsRouteObserver(), + SentryNavigatorObserver(), ], initialRoute: router.initialRoute(), debugShowCheckedModeBanner: false, diff --git a/lib/error_reporting.dart b/lib/error_reporting.dart index 665fc86f..bb6d3871 100644 --- a/lib/error_reporting.dart +++ b/lib/error_reporting.dart @@ -8,6 +8,7 @@ import 'package:flutter/foundation.dart'; import 'package:device_info/device_info.dart'; import 'package:package_info/package_info.dart'; import 'package:sentry/sentry.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:stack_trace/stack_trace.dart'; import 'package:gitjournal/.env.dart'; @@ -15,15 +16,15 @@ import 'package:gitjournal/app.dart'; import 'package:gitjournal/app_settings.dart'; import 'package:gitjournal/utils/logger.dart'; -SentryClient _sentryClient; -Future _initSentry() async { - return SentryClient(SentryOptions( - dsn: environment['sentry'], - )); -} - -Future getSentryClient() async { - return _sentryClient ??= await _initSentry(); +Future initSentry() async { + if (Sentry.isEnabled) { + return; + } + await SentryFlutter.init( + (options) { + options.dsn = environment['sentry']; + }, + ); } Future get _environmentEvent async { @@ -140,14 +141,14 @@ Future captureSentryException( SentryLevel level = SentryLevel.error, }) async { try { - final sentry = await getSentryClient(); + await initSentry(); final event = (await _environmentEvent).copyWith( exception: exception, breadcrumbs: breadcrumbs, level: level, ); - return sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse); + return Sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse); } catch (e) { print("Failed to report with Sentry: $e"); }