package org.dhis2.data.server; import android.content.Context; import com.facebook.stetho.okhttp3.StethoInterceptor; import com.google.firebase.analytics.FirebaseAnalytics; import org.dhis2.BuildConfig; import org.dhis2.data.dagger.PerServer; import org.dhis2.data.prefs.PreferenceProviderImpl; import org.dhis2.utils.analytics.AnalyticsHelper; import org.dhis2.utils.analytics.AnalyticsInterceptor; import org.hisp.dhis.android.core.D2; import org.hisp.dhis.android.core.D2Configuration; import org.hisp.dhis.android.core.D2Manager; import java.util.ArrayList; import java.util.List; import dagger.Module; import dagger.Provides; import okhttp3.Interceptor; @Module @PerServer public class ServerModule { @Provides @PerServer D2 sdk() { return D2Manager.getD2(); } @Provides @PerServer UserManager configurationRepository(D2 d2) { return new UserManagerImpl(d2); } @Provides @PerServer DataBaseExporter dataBaseExporter(D2 d2) { return new DataBaseExporterImpl(d2); } public static D2Configuration getD2Configuration(Context context) { List<Interceptor> interceptors = new ArrayList<>(); interceptors.add(new StethoInterceptor()); interceptors.add(new AnalyticsInterceptor( new AnalyticsHelper(FirebaseAnalytics.getInstance(context), new PreferenceProviderImpl(context)))); return D2Configuration.builder() .appName(BuildConfig.APPLICATION_ID) .appVersion(BuildConfig.VERSION_NAME) .connectTimeoutInSeconds(3 * 60) .readTimeoutInSeconds(3 * 60) .networkInterceptors(interceptors) .writeTimeoutInSeconds(3 * 60) .context(context) .build(); } }