import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';

import '../firebase_options_prod.dart' as prod;
import '../firebase_options_stage.dart' as stage;
import '../firebase_options_dev.dart' as dev;

@pragma('vm:entry-point')
Future<void> _backgroundHandler(RemoteMessage message) async {
  debugPrint('Background message: ${message.data}');
}

final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.instance;
final firebaseAnalyticsObserver = FirebaseAnalyticsObserver(
  analytics: firebaseAnalytics,
);

Future<void> configureFirebase() async {
  final firebaseOptions = switch (appFlavor?.toLowerCase()) {
    'prod' => prod.DefaultFirebaseOptions.currentPlatform,
    'stage' => stage.DefaultFirebaseOptions.currentPlatform,
    'develop' => dev.DefaultFirebaseOptions.currentPlatform,
    _ => throw UnsupportedError('Invalid flavor: $appFlavor'),
  };
  await Firebase.initializeApp(name: appFlavor, options: firebaseOptions);
  //TODO: As default the analytics is disabled, but it should be enabled when the user accepts the terms and conditions
  FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(true);
  FirebaseAnalytics.instance.setConsent(
    analyticsStorageConsentGranted: true,
    adStorageConsentGranted: true,
    adUserDataConsentGranted: true,
    adPersonalizationSignalsConsentGranted: true,
  );
  FirebaseMessaging.onBackgroundMessage(_backgroundHandler);
}