Commit d9bbcd40 authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Update SidebarMainPresenter.java

parent 8580725e
...@@ -5,6 +5,7 @@ import android.support.v4.util.Pair; ...@@ -5,6 +5,7 @@ import android.support.v4.util.Pair;
import chat.rocket.core.models.Spotlight; import chat.rocket.core.models.Spotlight;
import chat.rocket.persistence.realm.repositories.RealmSpotlightRepository; import chat.rocket.persistence.realm.repositories.RealmSpotlightRepository;
import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
...@@ -143,14 +144,30 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View ...@@ -143,14 +144,30 @@ public class SidebarMainPresenter extends BasePresenter<SidebarMainContract.View
.distinctUntilChanged() .distinctUntilChanged()
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get())) .subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(this::processRooms, Logger::report);
rooms -> view.showRoomList(rooms),
Logger::report
);
addSubscription(subscription); addSubscription(subscription);
} }
private void processRooms(List<Room> roomList) {
view.showRoomList(roomList);
for (Room room: roomList) {
if (room.isDirectMessage()) {
subscribeToDirectMessages(room.getName());
}
}
}
private void subscribeToDirectMessages(String username) {
final Disposable disposable = userRepository.getByUsername(username)
.distinctUntilChanged()
.filter(Optional::isPresent)
.map(Optional::get)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(view::showUserStatus, Logger::report);
addSubscription(disposable);
}
private void updateCurrentUserStatus(String status) { private void updateCurrentUserStatus(String status) {
methodCallHelper.setUserStatus(status).continueWith(new LogIfError()); methodCallHelper.setUserStatus(status).continueWith(new LogIfError());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment