import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:flutter/foundation.dart';
import '../models/analytics_event_item.dart' as comwell;
class FirebaseTracker {
final _tracking = FirebaseAnalytics.instance;
void trackScreen({required String name, required String path}) {
_trackScreen( name, path);
}
void trackAddToCart(comwell.AnalyticsEventItem analyticsEventItem) {
_track(_eventAddToCart, analyticsEventItem.toJson());
}
void trackRemoveFromCard(comwell.AnalyticsEventItem analyticsEventItem) {
_track(_eventRemoveFromCart, analyticsEventItem.toJson());
}
void trackBeginCheckout(comwell.AnalyticsEventItem analyticsEventItem) {
_track(_eventBeginCheckout, analyticsEventItem.toJson());
}
void tracklogin() {
_tracking.logLogin();
}
void trackEvent(String name) {
_track(name, null);
}
void trackBookNewReservation() {
_tracking.logEvent(name: 'click', parameters: {'click_text': 'Book nyt ophold'});
}
void trackSuccessfulCheckIn(Map<String, Object> parameters) {
_tracking.logEvent(name: 'check_in_success', parameters: parameters);
}
void trackFailedCheckIn(Map<String, Object> parameters) {
_tracking.logEvent(name: 'check_in_failure', parameters: parameters);
}
void _track(String name, Map<String, dynamic>? parameters) async {
try {
final safeParams = parameters?.map((k, v) {
if (v is List) {
return MapEntry(k, v.join(','));
}
return MapEntry(k, v as Object);
}) ?? <String, Object>{};
await _tracking.logEvent(
name: name,
parameters: safeParams,
);
} catch (e, st) {
if (kDebugMode) print("err=$e, $st");
}
}
void _trackScreen(String name, String screenClass) async {
try {
await _tracking.logScreenView(
screenName: name,
screenClass: screenClass
);
print('qqq trackScreen: $name, $screenClass');
} catch (e, st) {
if (kDebugMode) print("err=$e, $st");
}
}
// event names
//static const _eventScreenView = "screen_view";
static const _eventAddToCart = "add_to_cart";
static const _eventRemoveFromCart = "remove_from_cart";
static const _eventBeginCheckout = "begin_checkout";
void trackComwellClubSignup() {
_tracking.logEvent(name: 'club_sign_up');
}
// params
// static const _paramScreenClass = "screen_class";
// static const _paramScreenName = "screen_name";
}