package com.badoo.chateau.ui.chat.typing; import android.support.annotation.NonNull; import com.badoo.barf.mvp.BaseRxPresenter; import com.badoo.barf.rx.ScheduleOn; import com.badoo.chateau.core.model.User; import com.badoo.chateau.core.usecases.istyping.SendUserIsTyping; import com.badoo.chateau.core.usecases.istyping.SubscribeToUsersTyping; import rx.android.schedulers.AndroidSchedulers; public class BaseIsTypingPresenter<U extends User> extends BaseRxPresenter implements IsTypingPresenter<U> { @NonNull private final IsTypingView<U> mView; @NonNull private final String mConversationId; @NonNull private final SubscribeToUsersTyping<U> mSubscribeToUsersTyping; @NonNull private final SendUserIsTyping mSendUserIsTyping; public BaseIsTypingPresenter(@NonNull IsTypingView<U> view, @NonNull String conversationId, @NonNull SubscribeToUsersTyping<U> subscribeToUsersTyping, @NonNull SendUserIsTyping sendUserIsTyping) { mView = view; mConversationId = conversationId; mSubscribeToUsersTyping = subscribeToUsersTyping; mSendUserIsTyping = sendUserIsTyping; } @Override public void onStart() { manage(mSubscribeToUsersTyping.execute(mConversationId) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mView::showOtherUserTyping)); } @Override public void onUserTyping() { manage(mSendUserIsTyping.execute(mConversationId) .compose(ScheduleOn.io()) .subscribe()); } }