diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java index fe224e0ffb156bd01a3ac0f5fc5cea4de4e98955..faffcaea9635fb27f84c65534aae4f223c0ac93f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java @@ -43,22 +43,10 @@ public class ChatPresenter extends BaseErrorPresenter { private double[] mData; private boolean isRecordPlaying = false; private long mRecordTime; - private Observable mMessageObservable; private Long mFirstMsgId; @Override protected void onFirstViewAttach() { super.onFirstViewAttach(); - mMessageObservable = mDataManager.getMsgsByChatId(mRoom.id) - .doOnNext(messages -> { - for (int i = 0; i < messages.size(); i++) { - Message message = messages.get(i); - ChatPresenter.this.downloadRecord(message); - } - }) - .flatMap(Observable::fromIterable) - .distinct() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); } @Override public void attachView(ChatView view) { @@ -195,9 +183,19 @@ public class ChatPresenter extends BaseErrorPresenter { } public void subscribeOnOldMsgs() { - addDisposable(mMessageObservable + addDisposable(mDataManager.getMsgsByChatId(mRoom.id) +// .doOnNext(messages -> { +// for (int i = 0; i < messages.size(); i++) { +// Message message = messages.get(i); +// ChatPresenter.this.downloadRecord(message); +// } +// }) + .flatMap(Observable::fromIterable) + .distinct() .filter(message -> mFirstMsgId != null && message.id < mFirstMsgId) .doOnNext(ChatPresenter.this::downloadRecord) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) .subscribe(message -> { mFirstMsgId = message.id; getViewState().addOldMsgs(message); diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MyProfilePresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MyProfilePresenter.java index 5fdacab007f909b7139a5b157a15bad4845f381e..a0aba50e4f926ca3e13ce128a13ab153dbab110f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MyProfilePresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MyProfilePresenter.java @@ -37,7 +37,7 @@ import static io.reactivex.Observable.combineLatest; @InjectViewState public class MyProfilePresenter extends BasePresenter { - private static final int LIMIT_ITEMS_PER_GROUP = 1; + private static final int LIMIT_ITEMS_PER_GROUP = 5; private static final int LIMIT_ITEMS = LIMIT_ITEMS_PER_GROUP + 1; @Override public void attachView(MyProfileView view) { @@ -92,29 +92,38 @@ public class MyProfilePresenter extends BasePresenter { vhModels.add(new VHModel(VHModel.HEADER_TAG, profile)); vhModels.add(new VHModel(VHModel.TITLE_TAG, R.string.unread_private_chats)); - for (Room room : privateChats) { - vhModels.add(new VHModel(VHModel.P2P_MESSAGE_TAG, room)); - } - if (privateChats.size() == 0) + if (privateChats.size() == 0) { vhModels.add(new VHModel(VHModel.EMPTY, R.string.no_unread)); + } else { + int s = privateChats.size() > LIMIT_ITEMS_PER_GROUP ? LIMIT_ITEMS_PER_GROUP : privateChats.size(); + for (int i = 0; i < s; i++) { + vhModels.add(new VHModel(VHModel.P2P_MESSAGE_TAG, privateChats.get(i))); + } + } if (privateChats.size() > LIMIT_ITEMS_PER_GROUP) vhModels.add(new VHModel(VHModel.P2P_MESSAGE_SHOW_MORE_TAG, R.string.show_more)); vhModels.add(new VHModel(VHModel.TITLE_TAG, R.string.unread_group_chats)); - for (Room room : groupChats) { - vhModels.add(new VHModel(VHModel.GROUP_MESSAGE_TAG, room)); - } - if (groupChats.size() == 0) + if (groupChats.size() == 0) { vhModels.add(new VHModel(VHModel.EMPTY, R.string.no_unread_group)); + } else { + int s = groupChats.size() > LIMIT_ITEMS_PER_GROUP ? LIMIT_ITEMS_PER_GROUP : groupChats.size(); + for (int i = 0; i < s; i++) { + vhModels.add(new VHModel(VHModel.GROUP_MESSAGE_TAG, groupChats.get(i))); + } + } if (groupChats.size() > LIMIT_ITEMS_PER_GROUP) vhModels.add(new VHModel(VHModel.GROUP_MESSAGE_SHOW_MORE_TAG, R.string.show_more)); vhModels.add(new VHModel(VHModel.TITLE_TAG, R.string.contact_requests)); - for (Contact contact : contacts) { - vhModels.add(new VHModel(VHModel.CONTACT_REQUEST_TAG, contact)); - } - if (contacts.size() == 0) + if (contacts.size() == 0) { vhModels.add(new VHModel(VHModel.EMPTY, R.string.no_contacts)); + } else { + int s = contacts.size() > LIMIT_ITEMS_PER_GROUP ? LIMIT_ITEMS_PER_GROUP : contacts.size(); + for (int i = 0; i < s; i++) { + vhModels.add(new VHModel(VHModel.CONTACT_REQUEST_TAG, contacts.get(i))); + } + } if (contacts.size() > LIMIT_ITEMS_PER_GROUP) vhModels.add(new VHModel(VHModel.CONTACT_REQUEST_SHOW_MORE_TAG, R.string.show_more));