Skip to content

Commit c986800

Browse files
committed
Fixes nodejs#131: Messages order same as web UI
1 parent 016995e commit c986800

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

app/src/main/java/com/zulip/android/activities/MessageListFragment.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ public void onMessages(Message[] messages, LoadPosition pos,
343343
int topPosBefore = linearLayoutManager.findFirstVisibleItemPosition();
344344
int addedCount = 0;
345345
int headerParents = 0;
346-
346+
StringBuilder stringBuilder = new StringBuilder ();
347347
if (pos == LoadPosition.NEW && !loadedToBottom) {
348348
// If we don't have intermediate messages loaded, don't add new
349349
// messages -- they'll be loaded when we scroll down.
@@ -383,7 +383,7 @@ public void onMessages(Message[] messages, LoadPosition pos,
383383
this.adapter.addNewMessage(message);
384384
messageList.add(message);
385385
} else if (pos == LoadPosition.ABOVE || pos == LoadPosition.INITIAL) {
386-
headerParents = (this.adapter.addMessage(message, addedCount + headerParents)) ? headerParents + 1 : headerParents;
386+
headerParents = (this.adapter.addOldMessage(message, addedCount + headerParents, stringBuilder)) ? headerParents + 1 : headerParents;
387387
messageList.add(addedCount, message);
388388
addedCount++;
389389
}

app/src/main/java/com/zulip/android/activities/RecyclerMessageAdapter.java

+14-15
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,25 @@
1010
import android.support.v4.view.ViewCompat;
1111
import android.support.v7.app.AppCompatDelegate;
1212
import android.support.v7.widget.RecyclerView;
13-
import android.util.Log;
1413
import android.text.format.DateUtils;
14+
import android.util.Log;
1515
import android.util.TypedValue;
1616
import android.view.LayoutInflater;
1717
import android.view.View;
1818
import android.view.ViewGroup;
1919

20-
import com.zulip.android.models.Person;
21-
import com.zulip.android.models.Stream;
22-
import com.zulip.android.networking.AsyncPointerUpdate;
23-
2420
import com.squareup.picasso.Picasso;
25-
import com.zulip.android.util.OnItemClickListener;
2621
import com.zulip.android.R;
2722
import com.zulip.android.ZulipApp;
2823
import com.zulip.android.filters.NarrowFilterPM;
2924
import com.zulip.android.filters.NarrowFilterStream;
3025
import com.zulip.android.filters.NarrowListener;
3126
import com.zulip.android.models.Message;
3227
import com.zulip.android.models.MessageType;
28+
import com.zulip.android.models.Person;
29+
import com.zulip.android.models.Stream;
30+
import com.zulip.android.networking.AsyncPointerUpdate;
31+
import com.zulip.android.util.OnItemClickListener;
3332
import com.zulip.android.util.ZLog;
3433
import com.zulip.android.viewholders.LoadingHolder;
3534
import com.zulip.android.viewholders.MessageHeaderParent;
@@ -204,8 +203,10 @@ private int[] getHeaderAndNextIndex(String id) {
204203

205204
private void setupLists(List<Message> messageList) {
206205
int headerParents = 0;
206+
StringBuilder stringBuilder = new StringBuilder();
207207
for (int i = 0; i < messageList.size() - 1; i++) {
208-
headerParents = (addMessage(messageList.get(i), i + headerParents)) ? headerParents + 1 : headerParents;
208+
Message message = messageList.get(i);
209+
headerParents = (addOldMessage(message, i + headerParents, stringBuilder)) ? headerParents + 1 : headerParents;
209210
}
210211
setFooterShowing(false);
211212
setHeaderShowing(false);
@@ -234,11 +235,8 @@ else if (getItem(position) instanceof Integer && (Integer) getItem(position) ==
234235
* @param messageAndHeadersCount Count of the (messages + messageHeaderParent) added in the loop from where this function is being called
235236
* @return returns true if a new messageHeaderParent is created for this message so as to increment the count by where this function is being called.
236237
*/
237-
public boolean addMessage(Message message, int messageAndHeadersCount) {
238-
239-
int[] index = getHeaderAndNextIndex(message.getIdForHolder());
240-
241-
if (index[0] < 0) { //No messageParent for this one
238+
public boolean addOldMessage(Message message, int messageAndHeadersCount, StringBuilder lastHolderId) {
239+
if (!lastHolderId.toString().equals(message.getIdForHolder()) || lastHolderId.toString().equals("")) {
242240
MessageHeaderParent messageHeaderParent = new MessageHeaderParent((message.getStream() == null) ? null : message.getStream().getName(), message.getSubject(), message.getIdForHolder());
243241
messageHeaderParent.setMessageType(message.getType());
244242
messageHeaderParent.setDisplayRecipent(message.getDisplayRecipient(zulipApp));
@@ -250,11 +248,12 @@ public boolean addMessage(Message message, int messageAndHeadersCount) {
250248
notifyItemInserted(messageAndHeadersCount + 1);
251249
items.add(messageAndHeadersCount + 2, message);
252250
notifyItemInserted(messageAndHeadersCount + 2);
251+
lastHolderId.setLength(0);
252+
lastHolderId.append(messageHeaderParent.getId());
253253
return true;
254254
} else {
255-
int nextHeader = (index[1] != -1) ? index[1] : getItemCount(false);
256-
items.add(nextHeader, message);
257-
notifyItemInserted(nextHeader);
255+
items.add(messageAndHeadersCount + 1, message);
256+
notifyItemInserted(messageAndHeadersCount + 1);
258257
return false;
259258
}
260259
}

0 commit comments

Comments
 (0)