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);
...@@ -560,7 +562,6 @@ public class RoomFragment extends AbstractChatRoomFragment implements ...@@ -560,7 +562,6 @@ public class RoomFragment extends AbstractChatRoomFragment implements
break; break;
} }
} }
}
@Override @Override
public void updateHistoryState(boolean hasNext, boolean isLoaded) { public void updateHistoryState(boolean hasNext, boolean isLoaded) {
......
...@@ -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;
...@@ -217,29 +220,25 @@ public class RoomPresenter extends BasePresenter<RoomContract.View> ...@@ -217,29 +220,25 @@ public class RoomPresenter extends BasePresenter<RoomContract.View>
.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);
addSubscription(subscription);
}
private void processRoom(Room room) {
view.render(room);
if (room.isDirectMessage()) { if (room.isDirectMessage()) {
getUserByUsername(room, room.getName()); getUserByUsername(room.getName());
} else {
view.render(room, null);
} }
},
Logger::report
);
addSubscription(subscription);
} }
private void getUserByUsername(Room room, String username) { private void getUserByUsername(String username) {
final Disposable subscription = userRepository.getByUsername(username) Disposable disposable = userRepository.getByUsername(username)
.distinctUntilChanged() .distinctUntilChanged()
.filter(Optional::isPresent) .filter(Optional::isPresent)
.map(Optional::get) .map(Optional::get)
.subscribeOn(AndroidSchedulers.from(BackgroundLooper.get())) .subscribe(view::showUserStatus, Logger::report);
.observeOn(AndroidSchedulers.mainThread()) addSubscription(disposable);
.subscribe(user -> view.render(room, user),
Logger::report
);
addSubscription(subscription);
} }
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