code cleanup

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java          | 20 
src/main/java/eu/siacs/conversations/services/MessageArchiveService.java |  9 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  4 
3 files changed, 22 insertions(+), 11 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -76,6 +76,16 @@ public class Conversation extends AbstractEntity implements Blockable {
 
 	private Bookmark bookmark;
 
+	private boolean messagesLeftOnServer = true;
+
+	public boolean hasMessagesLeftOnServer() {
+		return messagesLeftOnServer;
+	}
+
+	public void setHasMessagesLeftOnServer(boolean value) {
+		this.messagesLeftOnServer = value;
+	}
+
 	public Message findUnsentMessageWithUuid(String uuid) {
 		synchronized(this.messages) {
 			for (final Message message : this.messages) {
@@ -227,13 +237,10 @@ public class Conversation extends AbstractEntity implements Blockable {
 	}
 
 	public boolean isRead() {
-		return (this.messages == null) || (this.messages.size() == 0) || this.messages.get(this.messages.size() - 1).isRead();
+		return (this.messages.size() == 0) || this.messages.get(this.messages.size() - 1).isRead();
 	}
 
 	public void markRead() {
-		if (this.messages == null) {
-			return;
-		}
 		for (int i = this.messages.size() - 1; i >= 0; --i) {
 			if (messages.get(i).isRead()) {
 				break;
@@ -243,9 +250,6 @@ public class Conversation extends AbstractEntity implements Blockable {
 	}
 
 	public Message getLatestMarkableMessage() {
-		if (this.messages == null) {
-			return null;
-		}
 		for (int i = this.messages.size() - 1; i >= 0; --i) {
 			if (this.messages.get(i).getStatus() <= Message.STATUS_RECEIVED
 					&& this.messages.get(i).markable) {
@@ -260,7 +264,7 @@ public class Conversation extends AbstractEntity implements Blockable {
 	}
 
 	public Message getLatestMessage() {
-		if ((this.messages == null) || (this.messages.size() == 0)) {
+		if (this.messages.size() == 0) {
 			Message message = new Message(this, "", Message.ENCRYPTION_NONE);
 			message.setTime(getCreated());
 			return message;

src/main/java/eu/siacs/conversations/services/MessageArchiveService.java 🔗

@@ -24,7 +24,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 	private final XmppConnectionService mXmppConnectionService;
 
 	private final HashSet<Query> queries = new HashSet<Query>();
-	private ArrayList<Query> pendingQueries = new ArrayList<Query>();
+	private final ArrayList<Query> pendingQueries = new ArrayList<Query>();
 
 	public enum PagingOrder {
 		NORMAL,
@@ -134,6 +134,7 @@ 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 {
@@ -300,7 +301,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 		public void callback() {
 			if (this.callback != null) {
 				this.callback.onMoreMessagesLoaded(messageCount,conversation);
-				if (messageCount==0) {
+				if (messageCount == 0) {
 					this.callback.informUser(R.string.no_more_history_on_server);
 				}
 			}
@@ -330,6 +331,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 			return this.totalCount;
 		}
 
+		public int getMessageCount() {
+			return this.messageCount;
+		}
+
 		@Override
 		public String toString() {
 			StringBuilder builder = new StringBuilder();

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -971,7 +971,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 				if (messages.size() > 0) {
 					conversation.addAll(0, messages);
 					callback.onMoreMessagesLoaded(messages.size(), conversation);
-				} else if (account.getStatus() == Account.State.ONLINE && account.getXmppConnection() != null && account.getXmppConnection().getFeatures().mam()) {
+				} else if (conversation.hasMessagesLeftOnServer()
+						&& account.isOnlineAndConnected()
+						&& account.getXmppConnection().getFeatures().mam()) {
 					MessageArchiveService.Query query = getMessageArchiveService().query(conversation,0,timestamp - 1);
 					if (query != null) {
 						query.setCallback(callback);