package com.example.features.dashboard.dagger; import android.support.test.espresso.idling.CountingIdlingResource; import com.example.features.dashboard.model.ShotMapper; import com.example.features.dashboard.presenter.MainPresenter; import com.example.features.dashboard.view.MainActivityViewState; import com.example.features.dashboard.view.ShotViewHolder; import com.example.features.dashboard.view.ShotViewHolderFactory; import com.example.features.dashboard.view.ShotsAdapter; import com.example.model.Shot; import com.example.model.api.ShotResponse; import com.example.networking.RestService; import com.example.tools.analytics.AnalyticsHelper; import com.example.tools.images.ImageLoader; import com.example.util.mvp.base.Mapper; import com.example.util.other.ViewHolderFactory; import com.example.util.rx.RxSchedulers; import dagger.Module; import dagger.Provides; @Module public final class MainActivityModule { private MainActivityModule() { throw new AssertionError(); } @Provides public static MainActivityViewState providesMainActivityViewState() { return new MainActivityViewState(); } @Provides public static ShotsAdapter providesShotsAdapter(ViewHolderFactory<ShotViewHolder> shotViewHolderFactory) { return new ShotsAdapter(shotViewHolderFactory); } @Provides public static MainPresenter providesMainPresenter(RestService restService, RxSchedulers rxSchedulers, AnalyticsHelper analyticsHelper, Mapper<ShotResponse, Shot> shotMapper, CountingIdlingResource countingIdlingResource) { return new MainPresenter(restService, rxSchedulers, analyticsHelper, shotMapper, countingIdlingResource); } @Provides public static Mapper<ShotResponse, Shot> providesShotMapper() { return new ShotMapper(); } @Provides public static ViewHolderFactory<ShotViewHolder> providesViewHolderFactory(ImageLoader imageLoader) { return new ShotViewHolderFactory(imageLoader); } }