package com.jdroid.android.google.admob;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import com.jdroid.android.activity.AbstractFragmentActivity;
import com.jdroid.android.activity.ActivityDelegate;
import com.jdroid.android.application.AbstractAppModule;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.debug.PreferencesAppender;
import com.jdroid.android.firebase.remoteconfig.RemoteConfigParameter;
import com.jdroid.android.fragment.FragmentDelegate;
import com.jdroid.android.google.admob.analytics.AdMobAnalyticsSender;
import com.jdroid.android.google.admob.analytics.AdMobAnalyticsTracker;
import com.jdroid.android.google.admob.analytics.AdMobGoogleAnalyticsTracker;
import com.jdroid.java.analytics.BaseAnalyticsSender;
import com.jdroid.java.analytics.BaseAnalyticsTracker;
import com.jdroid.java.collections.Lists;
import java.util.List;
public class AdMobAppModule extends AbstractAppModule {
public static final String MODULE_NAME = AdMobAppModule.class.getName();
public static AdMobAppModule get() {
return (AdMobAppModule)AbstractApplication.get().getAppModule(MODULE_NAME);
}
private AdMobAppContext adMobAppContext;
private AdMobDebugContext adMobDebugContext;
public AdMobAppModule() {
adMobAppContext = createAdMobAppContext();
}
protected AdMobAppContext createAdMobAppContext() {
return new AdMobAppContext();
}
public AdMobAppContext getAdMobAppContext() {
return adMobAppContext;
}
@Override
public List<PreferencesAppender> getPreferencesAppenders() {
return getAdMobDebugContext().getPreferencesAppenders();
}
public AdMobDebugContext getAdMobDebugContext() {
synchronized (AbstractApplication.class) {
if (adMobDebugContext == null) {
adMobDebugContext = createAdMobDebugContext();
}
}
return adMobDebugContext;
}
protected AdMobDebugContext createAdMobDebugContext() {
return new AdMobDebugContext();
}
@Override
public ActivityDelegate createActivityDelegate(AbstractFragmentActivity abstractFragmentActivity) {
return new AdMobActivityDelegate(abstractFragmentActivity);
}
@Override
public FragmentDelegate createFragmentDelegate(Fragment fragment) {
return null;
}
@NonNull
@Override
public BaseAnalyticsSender<? extends BaseAnalyticsTracker> createModuleAnalyticsSender(List<? extends BaseAnalyticsTracker> analyticsTrackers) {
return new AdMobAnalyticsSender((List<AdMobAnalyticsTracker>)analyticsTrackers);
}
@Override
public List<? extends BaseAnalyticsTracker> createModuleAnalyticsTrackers() {
return Lists.newArrayList(new AdMobGoogleAnalyticsTracker());
}
@NonNull
@Override
public AdMobAnalyticsSender getAnalyticsSender() {
return (AdMobAnalyticsSender)super.getAnalyticsSender();
}
@Override
public List<RemoteConfigParameter> getRemoteConfigParameters() {
return Lists.<RemoteConfigParameter>newArrayList(AdMobRemoteConfigParameter.values());
}
}