Fix flagging no more messages on server for conversation

This commit is contained in:
steckbrief 2015-12-06 16:20:11 +01:00
parent 0086d5dc80
commit eb5a7a5392
3 changed files with 15 additions and 2 deletions

View file

@ -134,10 +134,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
if (conversation.setLastMessageTransmitted(query.getEnd())) {
this.mXmppConnectionService.databaseBackend.updateConversation(conversation);
}
conversation.setHasMessagesLeftOnServer(query.getMessageCount() > 0);
if (query.hasCallback()) {
query.callback();
} else {
conversation.setHasMessagesLeftOnServer(query.getMessageCount() > 0);
this.mXmppConnectionService.updateConversationUi();
}
} else {

View file

@ -29,16 +29,24 @@ public class ConversationMoreMessagesLoadedListener implements XmppConnectionSer
The current loading status
*/
private boolean loadingMessages = false;
/**
* Whether the user is loading only history messages or not.
* History messages are messages which are older than the oldest in the database.
*/
private boolean loadHistory = true;
public ConversationMoreMessagesLoadedListener(SwipyRefreshLayout swipeLayout, List<Message> messageList, ConversationFragment fragment, ListView messagesView, MessageAdapter messageListAdapter) {
this.swipeLayout = swipeLayout;
this.messageList = messageList;
this.fragment = fragment;
this.messagesView = messagesView;
this.messageListAdapter = messageListAdapter;
}
public void setLoadHistory(boolean value) {
this.loadHistory = value;
}
public void setLoadingInProgress() {
this.loadingMessages = true;
}
@ -62,6 +70,9 @@ public class ConversationMoreMessagesLoadedListener implements XmppConnectionSer
}
// No new messages are loaded
if (0 == c) {
if (this.loadHistory) {
conversation.setHasMessagesLeftOnServer(false);
}
activity.runOnUiThread(new Runnable() {
@Override
public void run() {

View file

@ -43,6 +43,7 @@ public class ConversationSwipeRefreshListener implements SwipyRefreshLayout.OnRe
timestamp = this.messageList.get(0).getTimeSent(); // works only because of the ordering (last msg = first msg in list)
}
ConversationActivity activity = (ConversationActivity) fragment.getActivity();
this.listener.setLoadHistory(true);
activity.xmppConnectionService.loadMoreMessages(activity.getSelectedConversation(), timestamp, this.listener);
} else if (SwipyRefreshLayoutDirection.BOTTOM == direction) {
Logging.d("mam", "loading missing messages from mam (last session establishing or last received message)");
@ -53,6 +54,7 @@ public class ConversationSwipeRefreshListener implements SwipyRefreshLayout.OnRe
long startTimestamp = Math.min(lastSessionEstablished, lastReceivedMessage);
MessageArchiveService.Query query = activity.xmppConnectionService.getMessageArchiveService().query(activity.getSelectedConversation(), startTimestamp, System.currentTimeMillis());
if (query != null) {
this.listener.setLoadHistory(false);
query.setCallback(this.listener);
} else {
activity.runOnUiThread(new Runnable() {