package com.jdroid.android.google.inappbilling;
import android.support.annotation.NonNull;
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.google.inappbilling.analytics.InAppBillingAnalyticsSender;
import com.jdroid.android.google.inappbilling.analytics.InAppBillingAnalyticsTracker;
import com.jdroid.android.google.inappbilling.analytics.InAppBillingGoogleAnalyticsTracker;
import com.jdroid.java.analytics.BaseAnalyticsSender;
import com.jdroid.java.analytics.BaseAnalyticsTracker;
import com.jdroid.java.collections.Lists;
import java.util.List;
public class InAppBillingAppModule extends AbstractAppModule {
public static final String MODULE_NAME = InAppBillingAppModule.class.getName();
public static InAppBillingAppModule get() {
return (InAppBillingAppModule)AbstractApplication.get().getAppModule(MODULE_NAME);
}
private InAppBillingContext inAppBillingContext;
private InAppBillingDebugContext inAppBillingDebugContext;
@Override
public List<PreferencesAppender> getPreferencesAppenders() {
return getInAppBillingDebugContext().getPreferencesAppenders();
}
public InAppBillingDebugContext getInAppBillingDebugContext() {
synchronized (AbstractApplication.class) {
if (inAppBillingDebugContext == null) {
inAppBillingDebugContext = createInAppBillingDebugContext();
}
}
return inAppBillingDebugContext;
}
protected InAppBillingDebugContext createInAppBillingDebugContext() {
return new InAppBillingDebugContext();
}
public InAppBillingContext getInAppBillingContext() {
if (isInAppBillingEnabled()) {
synchronized (InAppBillingAppModule.class) {
if (inAppBillingContext == null) {
inAppBillingContext = createInAppBillingContext();
}
}
return inAppBillingContext;
} else {
return null;
}
}
public Boolean isInAppBillingEnabled() {
return true;
}
protected InAppBillingContext createInAppBillingContext() {
return new InAppBillingContext();
}
@Override
public ActivityDelegate createActivityDelegate(AbstractFragmentActivity abstractFragmentActivity) {
return new InAppBillingActivityDelegate(abstractFragmentActivity);
}
@NonNull
@Override
public BaseAnalyticsSender<? extends BaseAnalyticsTracker> createModuleAnalyticsSender(List<? extends BaseAnalyticsTracker> analyticsTrackers) {
return new InAppBillingAnalyticsSender((List<InAppBillingAnalyticsTracker>)analyticsTrackers);
}
@Override
public List<? extends BaseAnalyticsTracker> createModuleAnalyticsTrackers() {
return Lists.newArrayList(new InAppBillingGoogleAnalyticsTracker());
}
@NonNull
@Override
public InAppBillingAnalyticsSender getAnalyticsSender() {
return (InAppBillingAnalyticsSender)super.getAnalyticsSender();
}
}