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

Update status on DMs

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