package uk.ivanc.archimvp.presenter; import android.util.Log; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import uk.ivanc.archimvp.ArchiApplication; import uk.ivanc.archimvp.model.GithubService; import uk.ivanc.archimvp.model.User; import uk.ivanc.archimvp.view.RepositoryMvpView; public class RepositoryPresenter implements Presenter<RepositoryMvpView> { private static final String TAG = "RepositoryPresenter"; private RepositoryMvpView repositoryMvpView; private Subscription subscription; @Override public void attachView(RepositoryMvpView view) { this.repositoryMvpView = view; } @Override public void detachView() { this.repositoryMvpView = null; if (subscription != null) subscription.unsubscribe(); } public void loadOwner(String userUrl) { ArchiApplication application = ArchiApplication.get(repositoryMvpView.getContext()); GithubService githubService = application.getGithubService(); subscription = githubService.userFromUrl(userUrl) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(application.defaultSubscribeScheduler()) .subscribe(new Action1<User>() { @Override public void call(User user) { Log.i(TAG, "Full user data loaded " + user); repositoryMvpView.showOwner(user); } }); } }