package com.alorma.github.injector.module.issues; import com.alorma.github.injector.named.IOScheduler; import com.alorma.github.injector.named.MainScheduler; import com.alorma.github.injector.named.Token; import com.alorma.github.injector.scope.PerActivity; import com.alorma.github.presenter.issue.UserIssuesBaseRxPresenter; import core.ApiClient; import core.datasource.EmptyCacheDataSource; import core.issues.CloudIssuesDataSource; import core.issues.IssuesSearchRetrofitWrapper; import core.repository.GenericRepository; import dagger.Module; import dagger.Provides; import rx.Scheduler; @Module public class UserIssuesModule { @Provides @PerActivity IssuesSearchRetrofitWrapper provideIssuesRetrofitWrapper(ApiClient apiClient, @Token String token) { return new IssuesSearchRetrofitWrapper(apiClient, token); } @Provides @PerActivity CloudIssuesDataSource provideCloudUsersIssuesDataSource(IssuesSearchRetrofitWrapper retrofitWrapper) { return new CloudIssuesDataSource(retrofitWrapper); } @Provides @PerActivity UserIssuesBaseRxPresenter provideUserIssuesBaseRxPresenter(@MainScheduler Scheduler mainScheduler, @IOScheduler Scheduler ioScheduler, CloudIssuesDataSource cloudUsersIssuesDataSource) { return new UserIssuesBaseRxPresenter(mainScheduler, ioScheduler, new GenericRepository<>(new EmptyCacheDataSource<>(), cloudUsersIssuesDataSource)); } }