reorder and scroll down after resending a message

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java          | 17 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  2 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java        |  9 
3 files changed, 17 insertions(+), 11 deletions(-)

Detailed changes

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

@@ -848,16 +848,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
 
 	public void sort() {
 		synchronized (this.messages) {
-			Collections.sort(this.messages, new Comparator<Message>() {
-				@Override
-				public int compare(Message left, Message right) {
-					if (left.getTimeSent() < right.getTimeSent()) {
-						return -1;
-					} else if (left.getTimeSent() > right.getTimeSent()) {
-						return 1;
-					} else {
-						return 0;
-					}
+			Collections.sort(this.messages, (left, right) -> {
+				if (left.getTimeSent() < right.getTimeSent()) {
+					return -1;
+				} else if (left.getTimeSent() > right.getTimeSent()) {
+					return 1;
+				} else {
+					return 0;
 				}
 			});
 			untieMessages();

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1528,6 +1528,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 					activity.selectPresence(conversation, () -> {
 						message.setCounterpart(conversation.getNextCounterpart());
 						activity.xmppConnectionService.resendFailedMessages(message);
+						new Handler().post(() -> {
+							int size = messageList.size();
+							this.binding.messagesView.setSelection(size - 1);
+						});
 					});
 					return;
 				}
@@ -1540,7 +1544,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 			}
 		}
 		activity.xmppConnectionService.resendFailedMessages(message);
-	}
+		new Handler().post(() -> {
+			int size = messageList.size();
+			this.binding.messagesView.setSelection(size - 1);
+		});	}
 
 	private void copyUrl(Message message) {
 		final String url;