Analytics: decouple from error reporting

This commit is contained in:
Vishesh Handa
2021-08-09 11:53:24 +02:00
parent 7bbd79343a
commit 54c36af040
3 changed files with 14 additions and 8 deletions

View File

@ -1,9 +1,9 @@
import 'package:fixnum/fixnum.dart';
import 'package:function_types/function_types.dart';
import 'package:recase/recase.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:uuid/uuid.dart';
import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/logger/logger.dart';
import 'generated/analytics.pb.dart' as pb;
@ -62,13 +62,17 @@ enum Event {
class Analytics {
bool enabled = false;
final Func2<String, Map<String, String>, void> analyticsCallback;
Analytics._(this.analyticsCallback);
static Analytics? _global;
static Analytics init({
required bool enable,
required SharedPreferences pref,
required Func2<String, Map<String, String>, void> analyticsCallback,
}) {
_global = Analytics();
_global = Analytics._(analyticsCallback);
_global!.enabled = enable;
_global!._sessionId =
DateTime.now().millisecondsSinceEpoch.toRadixString(16);
@ -100,7 +104,7 @@ class Analytics {
print(event);
// await firebase.logEvent(name: name, parameters: parameters);
}
captureErrorBreadcrumb(name: name, parameters: parameters);
analyticsCallback(name, parameters);
}
Future<void> setCurrentScreen({required String screenName}) async {

View File

@ -21,6 +21,7 @@ import 'package:gitjournal/analytics/route_observer.dart';
import 'package:gitjournal/app_router.dart';
import 'package:gitjournal/core/notes_folder_config.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/iap/iap.dart';
import 'package:gitjournal/logger/logger.dart';
import 'package:gitjournal/repository.dart';
@ -128,7 +129,11 @@ class JournalApp extends StatefulWidget {
bool enabled = !JournalApp.isInDebugMode && !inFireBaseTestLab;
Log.d("Analytics Collection: $enabled");
var analytics = Analytics.init(enable: enabled, pref: pref);
var analytics = Analytics.init(
enable: enabled,
pref: pref,
analyticsCallback: captureErrorBreadcrumb,
);
if (enabled) {
analytics.setUserProperty(

View File

@ -118,10 +118,7 @@ Future<void> logExceptionWarning(Object e, StackTrace stackTrace) async {
List<Breadcrumb> breadcrumbs = [];
void captureErrorBreadcrumb({
required String name,
required Map<String, String> parameters,
}) {
void captureErrorBreadcrumb(String name, Map<String, String> parameters) {
if (!reportCrashes) {
return;
}