package com.jdroid.android.firebase; import android.support.annotation.WorkerThread; import com.jdroid.android.analytics.AnalyticsTracker; import com.jdroid.android.application.AbstractAppModule; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.firebase.analytics.FirebaseAnalyticsHelper; import com.jdroid.android.firebase.analytics.FirebaseAnalyticsTracker; import com.jdroid.java.collections.Lists; import java.util.List; public class FirebaseAppModule extends AbstractAppModule { public static final String MODULE_NAME = FirebaseAppModule.class.getName(); public static FirebaseAppModule get() { return (FirebaseAppModule)AbstractApplication.get().getAppModule(MODULE_NAME); } private FirebaseAnalyticsHelper firebaseAnalyticsHelper; private FirebaseAppContext firebaseAppContext; public FirebaseAppModule() { firebaseAppContext = createFirebaseAppContext(); } protected FirebaseAppContext createFirebaseAppContext() { return new FirebaseAppContext(); } public FirebaseAppContext getFirebaseAppContext() { return firebaseAppContext; } @WorkerThread public synchronized FirebaseAnalyticsHelper getFirebaseAnalyticsHelper() { if (firebaseAnalyticsHelper == null) { firebaseAnalyticsHelper = createFirebaseAnalyticsHelper(); } return firebaseAnalyticsHelper; } protected FirebaseAnalyticsHelper createFirebaseAnalyticsHelper() { return new FirebaseAnalyticsHelper(); } @Override public List<? extends AnalyticsTracker> getAnalyticsTrackers() { return firebaseAppContext.isFirebaseAnalyticsEnabled() ? Lists.newArrayList(createFirebaseAnalyticsTracker()) : Lists.<AnalyticsTracker>newArrayList(); } protected AnalyticsTracker createFirebaseAnalyticsTracker() { return new FirebaseAnalyticsTracker(); } }