workouttest_util/lib/util/track.dart
2023-01-28 12:53:16 +01:00

54 lines
1.8 KiB
Dart

import 'package:workouttest_util/model/cache.dart';
import 'package:workouttest_util/util/logging.dart';
import 'package:workouttest_util/service/tracking_service.dart';
import 'package:workouttest_util/util/enums.dart';
import 'package:workouttest_util/model/tracking.dart' as model;
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:posthog_session/posthog_session.dart';
import 'package:matomo_tracker/matomo_tracker.dart';
import 'package:flutter/foundation.dart';
class Track with Logging {
static final Track _singleton = Track._internal();
static FirebaseAnalytics analytics = FirebaseAnalytics.instance;
factory Track() {
return _singleton;
}
Track._internal();
void track(TrackingEvent event, {String eventValue = ""}) {
model.Tracking tracking = model.Tracking();
tracking.customerId = Cache().userLoggedIn == null ? 0 : Cache().userLoggedIn!.customerId!;
if (kReleaseMode) {
tracking.event = event.enumToString();
if (eventValue.isNotEmpty) {
tracking.eventValue = eventValue;
}
tracking.dateAdd = DateTime.now();
TrackingApi().saveTracking(tracking);
FirebaseMessaging.instance.subscribeToTopic(event.enumToString());
analytics.logEvent(name: event.enumToString(), parameters: {"value": eventValue});
if (eventValue.isNotEmpty) {
MatomoTracker.instance.trackEvent(eventCategory: "wt", action: event.enumToString(), eventName: eventValue);
} else {
MatomoTracker.instance.trackEvent(eventCategory: "wt", action: event.enumToString());
}
Posthog().capture(
eventName: event.enumToString(),
properties: {
'eventValue': eventValue,
'customer': tracking.customerId,
},
);
}
}
}