package tellh.com.gitclub.di.module;
import android.content.Context;
import dagger.Module;
import dagger.Provides;
import tellh.com.gitclub.di.DiView;
import tellh.com.gitclub.model.net.DataSource.ArsenalDataSource;
import tellh.com.gitclub.model.net.DataSource.ExploreDataSource;
import tellh.com.gitclub.model.net.DataSource.GankDataSource;
import tellh.com.gitclub.model.net.DataSource.RepositoryDataSource;
import tellh.com.gitclub.model.net.DataSource.UserDataSource;
import tellh.com.gitclub.presentation.contract.ExploreContract;
import tellh.com.gitclub.presentation.contract.LoginContract;
import tellh.com.gitclub.presentation.contract.NewsContract;
import tellh.com.gitclub.presentation.contract.RepoPageContract;
import tellh.com.gitclub.presentation.contract.RepoSourceContract;
import tellh.com.gitclub.presentation.contract.SearchContract;
import tellh.com.gitclub.presentation.presenter.ExplorePresenter;
import tellh.com.gitclub.presentation.presenter.PersonalPagePresenter;
import tellh.com.gitclub.presentation.presenter.ListRepoPresenter;
import tellh.com.gitclub.presentation.presenter.ListUserPresenter;
import tellh.com.gitclub.presentation.presenter.LoginPresenter;
import tellh.com.gitclub.presentation.presenter.NewsPresenter;
import tellh.com.gitclub.presentation.presenter.RepoPagePresenter;
import tellh.com.gitclub.presentation.presenter.RepoSourcePresenter;
import tellh.com.gitclub.presentation.presenter.SearchPresenter;
import tellh.com.gitclub.presentation.contract.PersonalPageContract.Presenter;
@Module
public class PresenterModule {
@Provides
public LoginContract.Presenter provideLoginPresenter(UserDataSource dataSource) {
return new LoginPresenter(dataSource);
}
@Provides
@DiView
public SearchContract.Presenter provideSearchPresenter(RepositoryDataSource repositoryDataSource, UserDataSource userDataSource) {
return new SearchPresenter(repositoryDataSource, userDataSource);
}
@Provides
@DiView
public ExploreContract.Presenter provideExplorePresenter(ExploreDataSource exploreDataSource, RepositoryDataSource repositoryDataSource,
GankDataSource gankDataSource, ArsenalDataSource arsenalDataSource) {
return new ExplorePresenter(exploreDataSource, repositoryDataSource, gankDataSource, arsenalDataSource);
}
@Provides
public NewsContract.Presenter provideNewsPresenter(UserDataSource userDataSource, Context context) {
return new NewsPresenter(userDataSource, context);
}
@Provides
public Presenter provideHomePagePresenter(UserDataSource userDataSource, Context ctx) {
return new PersonalPagePresenter(userDataSource, ctx);
}
@Provides
public ListRepoPresenter provideListRepoPresenter(UserDataSource userDataSource, RepositoryDataSource repositoryDataSource) {
return new ListRepoPresenter(userDataSource, repositoryDataSource);
}
@Provides
public ListUserPresenter provideListUserPresenter(RepositoryDataSource repositoryDataSource, UserDataSource userDataSource) {
return new ListUserPresenter(repositoryDataSource, userDataSource);
}
@Provides
public RepoPageContract.Presenter provideRepoPagePresenter(RepositoryDataSource repositoryDataSource) {
return new RepoPagePresenter(repositoryDataSource);
}
@Provides
public RepoSourceContract.Presenter provideRepoSourcePresenter(RepositoryDataSource repositoryDataSource) {
return new RepoSourcePresenter(repositoryDataSource);
}
}