mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-27 01:02:14 +08:00
Enable Sentry
Sentry now provides an official flutter client.
This commit is contained in:
@ -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<JournalApp> {
|
||||
|
||||
navigatorObservers: <NavigatorObserver>[
|
||||
AnalyticsRouteObserver(),
|
||||
SentryNavigatorObserver(),
|
||||
],
|
||||
initialRoute: router.initialRoute(),
|
||||
debugShowCheckedModeBanner: false,
|
||||
|
@ -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<SentryClient> _initSentry() async {
|
||||
return SentryClient(SentryOptions(
|
||||
dsn: environment['sentry'],
|
||||
));
|
||||
}
|
||||
|
||||
Future<SentryClient> getSentryClient() async {
|
||||
return _sentryClient ??= await _initSentry();
|
||||
Future<void> initSentry() async {
|
||||
if (Sentry.isEnabled) {
|
||||
return;
|
||||
}
|
||||
await SentryFlutter.init(
|
||||
(options) {
|
||||
options.dsn = environment['sentry'];
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<SentryEvent> get _environmentEvent async {
|
||||
@ -140,14 +141,14 @@ Future<void> 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");
|
||||
}
|
||||
|
Reference in New Issue
Block a user