import 'package:aitrainer_app/main.dart';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/service/logging.dart';
import 'package:aitrainer_app/service/tracking_service.dart';
import 'package:aitrainer_app/util/enums.dart';
import 'package:aitrainer_app/model/tracking.dart' as model;
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
//import 'package:flurry_data/flurry_data.dart';
import 'package:flutter_uxcam/flutter_uxcam.dart';
import 'package:smartlook/smartlook.dart';

class Track with Logging {
  static final Track _singleton = Track._internal();
  static FirebaseAnalytics analytics = FirebaseAnalytics();

  factory Track() {
    return _singleton;
  }

  Track._internal();

  void track(TrackingEvent event, {String eventValue = ""}) {
    if (!isInDebugMode) {
      //FlurryData.logEvent(event.enumToString());
      Smartlook.setGlobalEventProperty(event.toString(), eventValue, false);
      FlutterUxcam.logEventWithProperties(event.enumToString(), {"value": eventValue});
      model.Tracking tracking = model.Tracking();
      tracking.customerId = Cache().userLoggedIn == null ? 0 : Cache().userLoggedIn!.customerId!;
      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});
    }
  }
}