package com.alorma.github.injector.module.repository;
import com.alorma.github.injector.named.IOScheduler;
import com.alorma.github.injector.named.MainScheduler;
import com.alorma.github.injector.named.SortOrder;
import com.alorma.github.injector.scope.PerActivity;
import com.alorma.github.presenter.repos.OrganizationRepositoriesPresenter;
import com.alorma.github.presenter.repos.UserReposCache;
import core.repositories.CloudOrganizationRepositoriesDataSource;
import core.repositories.RepositoriesRetrofitWrapper;
import core.repository.GenericRepository;
import dagger.Module;
import dagger.Provides;
import rx.Scheduler;
@Module
public class OrganizationRepositoriesModule extends RepositoriesModule {
@Provides
@PerActivity
UserReposCache provideUserReposCache(){
return new UserReposCache("org_repos");
}
@Provides
@PerActivity
CloudOrganizationRepositoriesDataSource provideCloudOrganizationRepositoriesDataSource(
RepositoriesRetrofitWrapper retrofitWrapper,
@SortOrder String sortOrder) {
return new CloudOrganizationRepositoriesDataSource(retrofitWrapper, sortOrder);
}
@Provides
@PerActivity
OrganizationRepositoriesPresenter provideOrganizationRepositoriesPresenter(
@MainScheduler Scheduler mainScheduler, @IOScheduler Scheduler ioScheduler,
UserReposCache userReposCache,
CloudOrganizationRepositoriesDataSource dataSource) {
return new OrganizationRepositoriesPresenter(
mainScheduler, ioScheduler, new GenericRepository<>(userReposCache, dataSource));
}
}