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.named.Token;
import com.alorma.github.injector.scope.PerActivity;
import com.alorma.github.presenter.repos.AuthMembershipRepositoriesPresenter;
import com.alorma.github.presenter.repos.AuthUserReposCache;
import core.repositories.CloudMembershipRepositoriesDataSource;
import core.repositories.RepositoriesRetrofitWrapper;
import core.repository.GenericRepository;
import dagger.Module;
import dagger.Provides;
import rx.Scheduler;
@Module
public class MembershipRepositoriesModule extends RepositoriesModule {
@Provides
@PerActivity
AuthUserReposCache provideAuthUserReposCache(){
return new AuthUserReposCache("auth_membership");
}
@Provides
@PerActivity
CloudMembershipRepositoriesDataSource provideCloudMembershipRepositoriesDataSource(
RepositoriesRetrofitWrapper repositoriesRetrofitWrapper,
@SortOrder String sortOrder) {
return new CloudMembershipRepositoriesDataSource(repositoriesRetrofitWrapper, sortOrder);
}
@Provides
@PerActivity
AuthMembershipRepositoriesPresenter provideAuthMembershipRepositoriesPresenter(
@MainScheduler Scheduler mainScheduler, @IOScheduler Scheduler ioScheduler,
AuthUserReposCache authUserReposCache,
CloudMembershipRepositoriesDataSource cloudMembershipRepositoriesDataSource) {
return new AuthMembershipRepositoriesPresenter(
mainScheduler, ioScheduler,
new GenericRepository<>(authUserReposCache, cloudMembershipRepositoriesDataSource));
}
}