Commit 9f023b89 authored by Lucio Maciel's avatar Lucio Maciel

Update status on DMs

parent bddab26d
......@@ -173,6 +173,7 @@ dependencies {
provided 'io.reactivex.rxjava2:rxjava:2.1.0'
provided 'io.reactivex:rxjava:1.3.0'
provided "com.github.akarnokd:rxjava2-interop:0.10.2"
provided 'com.hadisatrio:Optional:v1.0.1'
}
apply plugin: 'com.google.gms.google-services'
......@@ -14,7 +14,9 @@ public interface RoomContract {
void setupWith(RocketChatAbsoluteUrl rocketChatAbsoluteUrl);
void render(Room room, @Nullable User user);
void render(Room room);
void showUserStatus(User user);
void updateHistoryState(boolean hasNext, boolean isLoaded);
......
......@@ -525,7 +525,7 @@ public class RoomFragment extends AbstractChatRoomFragment implements
}
@Override
public void render(Room room, @Nullable User user) {
public void render(Room room) {
setToolbarTitle(room.getName());
boolean unreadMessageExists = room.isAlert();
......@@ -543,8 +543,10 @@ public class RoomFragment extends AbstractChatRoomFragment implements
setToolbarRoomIcon(R.drawable.ic_padlock_opaque_black_24dp);
return;
}
}
if (user != null) {
@Override
public void showUserStatus(User user) {
switch (user.getStatus()) {
case User.STATUS_ONLINE:
setToolbarRoomIcon(R.drawable.ic_at_online_24dp);
......@@ -558,7 +560,6 @@ public class RoomFragment extends AbstractChatRoomFragment implements
default:
setToolbarRoomIcon(R.drawable.ic_at_opaque_black_24dp);
break;
}
}
}
......
......@@ -5,6 +5,9 @@ import android.support.annotation.Nullable;
import android.support.v4.util.Pair;
import com.hadisatrio.optional.Optional;
import io.reactivex.Flowable;
import io.reactivex.Observable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
......@@ -212,34 +215,30 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
private void getRoomInfo() {
final Disposable subscription = roomRepository.getById(roomId)
.distinctUntilChanged()
.filter(Optional::isPresent)
.map(Optional::get)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(room -> {
if (room.isDirectMessage()) {
getUserByUsername(room, room.getName());
} else {
view.render(room, null);
}
},
Logger::report
);
.distinctUntilChanged()
.filter(Optional::isPresent)
.map(Optional::get)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processRoom, Logger::report);
addSubscription(subscription);
}
private void getUserByUsername(Room room, String username) {
final Disposable subscription = userRepository.getByUsername(username)
.distinctUntilChanged()
.filter(Optional::isPresent)
.map(Optional::get)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get()))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> view.render(room, user),
Logger::report
);
addSubscription(subscription);
private void processRoom(Room room) {
view.render(room);
if (room.isDirectMessage()) {
getUserByUsername(room.getName());
}
}
private void getUserByUsername(String username) {
Disposable disposable = userRepository.getByUsername(username)
.distinctUntilChanged()
.filter(Optional::isPresent)
.map(Optional::get)
.subscribe(view::showUserStatus, Logger::report);
addSubscription(disposable);
}
private void getRoomHistoryStateInfo() {
......
......@@ -67,5 +67,7 @@ dependencies {
compile 'com.parse.bolts:bolts-tasks:1.4.0'
provided 'com.hadisatrio:Optional:v1.0.1'
testCompile 'junit:junit:4.12'
}
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