package com.hannesdorfmann.mosby3.sample.mail.details; import com.hannesdorfmann.mosby3.sample.mail.base.presenter.BaseRxMailPresenter; import com.hannesdorfmann.mosby3.sample.mail.model.event.MailReadEvent; import com.hannesdorfmann.mosby3.sample.mail.model.mail.Mail; import com.hannesdorfmann.mosby3.sample.mail.model.mail.MailProvider; import de.greenrobot.event.EventBus; import javax.inject.Inject; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * @author Hannes Dorfmann */ public class DetailsPresenter extends BaseRxMailPresenter<DetailsView, Mail> { @Inject public DetailsPresenter(MailProvider mailProvider, EventBus eventBus) { super(mailProvider, eventBus); } public void loadMail(int id) { subscribe(mailProvider.getMail(id), false); } @Override protected void onNext(Mail data) { super.onNext(data); if (isViewAttached() && !data.isRead()) { markAsRead(data); } } private void markAsRead(final Mail mail) { // We assume that this call could never fail eventBus.post(new MailReadEvent(mail, true)); mailProvider.markAsRead(mail, true) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(); } }