mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-27 17:29:50 +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:provider/provider.dart';
|
||||||
import 'package:quick_actions/quick_actions.dart';
|
import 'package:quick_actions/quick_actions.dart';
|
||||||
import 'package:receive_sharing_intent/receive_sharing_intent.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:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/analytics.dart';
|
import 'package:gitjournal/analytics.dart';
|
||||||
@ -307,6 +308,7 @@ class _JournalAppState extends State<JournalApp> {
|
|||||||
|
|
||||||
navigatorObservers: <NavigatorObserver>[
|
navigatorObservers: <NavigatorObserver>[
|
||||||
AnalyticsRouteObserver(),
|
AnalyticsRouteObserver(),
|
||||||
|
SentryNavigatorObserver(),
|
||||||
],
|
],
|
||||||
initialRoute: router.initialRoute(),
|
initialRoute: router.initialRoute(),
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
|
@ -8,6 +8,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:device_info/device_info.dart';
|
import 'package:device_info/device_info.dart';
|
||||||
import 'package:package_info/package_info.dart';
|
import 'package:package_info/package_info.dart';
|
||||||
import 'package:sentry/sentry.dart';
|
import 'package:sentry/sentry.dart';
|
||||||
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
import 'package:stack_trace/stack_trace.dart';
|
import 'package:stack_trace/stack_trace.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/.env.dart';
|
import 'package:gitjournal/.env.dart';
|
||||||
@ -15,15 +16,15 @@ import 'package:gitjournal/app.dart';
|
|||||||
import 'package:gitjournal/app_settings.dart';
|
import 'package:gitjournal/app_settings.dart';
|
||||||
import 'package:gitjournal/utils/logger.dart';
|
import 'package:gitjournal/utils/logger.dart';
|
||||||
|
|
||||||
SentryClient _sentryClient;
|
Future<void> initSentry() async {
|
||||||
Future<SentryClient> _initSentry() async {
|
if (Sentry.isEnabled) {
|
||||||
return SentryClient(SentryOptions(
|
return;
|
||||||
dsn: environment['sentry'],
|
}
|
||||||
));
|
await SentryFlutter.init(
|
||||||
}
|
(options) {
|
||||||
|
options.dsn = environment['sentry'];
|
||||||
Future<SentryClient> getSentryClient() async {
|
},
|
||||||
return _sentryClient ??= await _initSentry();
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<SentryEvent> get _environmentEvent async {
|
Future<SentryEvent> get _environmentEvent async {
|
||||||
@ -140,14 +141,14 @@ Future<void> captureSentryException(
|
|||||||
SentryLevel level = SentryLevel.error,
|
SentryLevel level = SentryLevel.error,
|
||||||
}) async {
|
}) async {
|
||||||
try {
|
try {
|
||||||
final sentry = await getSentryClient();
|
await initSentry();
|
||||||
final event = (await _environmentEvent).copyWith(
|
final event = (await _environmentEvent).copyWith(
|
||||||
exception: exception,
|
exception: exception,
|
||||||
breadcrumbs: breadcrumbs,
|
breadcrumbs: breadcrumbs,
|
||||||
level: level,
|
level: level,
|
||||||
);
|
);
|
||||||
|
|
||||||
return sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse);
|
return Sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("Failed to report with Sentry: $e");
|
print("Failed to report with Sentry: $e");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user