package com.example.tools.dagger.modules; import android.content.res.AssetManager; import com.crashlytics.android.answers.Answers; import com.example.App; import com.example.tools.analytics.AnalyticsHelper; import com.example.tools.images.ImageLoader; import com.example.tools.stetho.StethoTool; import com.example.util.StethoToolImpl; import com.example.util.other.PropertiesManager; import com.example.util.rx.RxSchedulers; import dagger.Module; import dagger.Provides; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; import javax.inject.Singleton; @Module public class ApplicationModule { private final App app; public ApplicationModule(App app) { this.app = app; } @Provides public App providesApplication() { return app; } @Provides public static RxSchedulers providesRxSchedulers() { return new RxSchedulers(Schedulers.io(), Schedulers.computation(), Schedulers.trampoline(), AndroidSchedulers.mainThread()); } @Provides @Singleton public static PropertiesManager providesPropertyManager(AssetManager assetManager) { return new PropertiesManager(assetManager); } @Provides @Singleton public static AnalyticsHelper providesAnalyticsHelper() { return new AnalyticsHelper(Answers.getInstance()); } @Provides @Singleton public static StethoTool providesStetho(App application) { return new StethoToolImpl(application.getApplicationContext()); } @Provides @Singleton public static ImageLoader providesImageLoader(App application) { return new ImageLoader(application.getApplicationContext()); } }