package com.mirhoseini.marvel; import android.content.Context; import com.google.firebase.analytics.FirebaseAnalytics; import com.mirhoseini.marvel.util.AppConstants; import com.mirhoseini.marvel.util.AppSchedulerProvider; import com.mirhoseini.marvel.util.Constants; import com.mirhoseini.marvel.util.SchedulerProvider; import com.mirhoseini.marvel.util.StateManager; import com.mirhoseini.marvel.util.StateManagerImpl; import com.mirhoseini.utils.Utils; import java.io.File; import javax.inject.Named; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import okhttp3.HttpUrl; /** * Created by Mohsen on 20/10/2016. */ @Module public class ApplicationModule { @Provides @Singleton @Named("isDebug") boolean provideIsDebug() { return BuildConfig.DEBUG; } @Provides @Singleton @Named("networkTimeoutInSeconds") int provideNetworkTimeoutInSeconds() { return AppConstants.NETWORK_CONNECTION_TIMEOUT; } @Provides @Singleton HttpUrl provideEndpoint() { return HttpUrl.parse(Constants.BASE_URL); } @Provides @Singleton SchedulerProvider provideAppScheduler() { return new AppSchedulerProvider(); } @Provides @Singleton @Named("cacheSize") long provideCacheSize() { return AppConstants.CACHE_SIZE; } @Provides @Singleton @Named("cacheMaxAge") int provideCacheMaxAgeMinutes() { return AppConstants.CACHE_MAX_AGE; } @Provides @Singleton @Named("cacheMaxStale") int provideCacheMaxStaleDays() { return AppConstants.CACHE_MAX_STALE; } @Provides @Singleton @Named("retryCount") public int provideApiRetryCount() { return AppConstants.API_RETRY_COUNT; } @Provides @Singleton @Named("cacheDir") File provideCacheDir(Context context) { return context.getCacheDir(); } @Provides @Named("isConnect") boolean provideIsConnect(Context context) { return Utils.isConnected(context); } @Provides FirebaseAnalytics provideFirebaseAnalytics(Context context) { return FirebaseAnalytics.getInstance(context); } @Provides @Singleton public StateManager provideStateManager(StateManagerImpl stateManager) { return stateManager; } }