From c336fc2f4c78d0613b31a0c6a70a7e9f1a6c646b Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Fri, 28 Apr 2023 20:52:54 -0500 Subject: [PATCH] Consider subject and thread part of the correctable content of a message --- src/main/java/eu/siacs/conversations/entities/Message.java | 7 ++++++- .../java/eu/siacs/conversations/parser/MessageParser.java | 2 ++ .../eu/siacs/conversations/ui/ConversationFragment.java | 6 +++++- .../eu/siacs/conversations/ui/util/SendButtonTool.java | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 362fc9338ddf933305d39db41191f91cf5688eb1..c91b1fb0f9380fbbbefd5cba8ea51a1f3bbc9793 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -54,6 +54,7 @@ import eu.siacs.conversations.utils.Emoticons; import eu.siacs.conversations.utils.GeoHelper; import eu.siacs.conversations.utils.MessageUtils; import eu.siacs.conversations.utils.MimeUtils; +import eu.siacs.conversations.utils.StringUtils; import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.xmpp.Jid; import eu.siacs.conversations.xml.Element; @@ -329,7 +330,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable values.put(UUID, uuid); values.put("subject", subject); values.put("fileParams", fileParams == null ? null : fileParams.toString()); - if (fileParams != null) { + if (fileParams != null && !fileParams.isEmpty()) { List sims = getSims(); if (sims.isEmpty()) { addPayload(fileParams.toSims()); @@ -1315,6 +1316,10 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } } + public boolean isEmpty() { + return StringUtils.nullOnEmpty(toString()) == null && StringUtils.nullOnEmpty(toSims().getContent()) == null; + } + public long getSize() { return size == null ? 0 : size; } diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 640b86f46f70a6c72815122899205e6821825406..a92c691b8356135e1f08678df7f5f92138646baa 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -745,6 +745,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece final String uuid = replacedMessage.getUuid(); replacedMessage.setUuid(UUID.randomUUID().toString()); replacedMessage.setBody(message.getBody()); + replacedMessage.setSubject(message.getSubject()); + replacedMessage.setThread(message.getThread()); replacedMessage.putEdited(replacedMessage.getRemoteMsgId(), replacedMessage.getServerMsgId()); replacedMessage.setRemoteMsgId(remoteMsgId); if (replaceElement != null && !replaceElement.getName().equals("replace")) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index eeae1973ee62f1e53deef18d6f2511d8ff416084..6bb74dfe527c147b6c60a23a5e0cbb620d758623 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -564,6 +564,7 @@ public class ConversationFragment extends XmppFragment break; case CANCEL: if (conversation != null) { + conversation.setUserSelectedThread(false); if (conversation.setCorrectingMessage(null)) { binding.textinput.setText(""); binding.textinput.append(conversation.getDraftMessage()); @@ -882,7 +883,6 @@ public class ConversationFragment extends XmppFragment } private void sendMessage() { - conversation.setUserSelectedThread(false); if (mediaPreviewAdapter.hasAttachments()) { commitAttachments(); return; @@ -922,6 +922,7 @@ public class ConversationFragment extends XmppFragment } else { message = conversation.getCorrectingMessage(); message.setBody(body); + message.setThread(conversation.getThread()); message.putEdited(message.getUuid(), message.getServerMsgId()); message.setServerMsgId(null); message.setUuid(UUID.randomUUID().toString()); @@ -2608,6 +2609,8 @@ public class ConversationFragment extends XmppFragment while (message.mergeable(message.next())) { message = message.next(); } + setThread(message.getThread()); + conversation.setUserSelectedThread(true); this.conversation.setCorrectingMessage(message); final Editable editable = binding.textinput.getText(); this.conversation.setDraftMessage(editable.toString()); @@ -3298,6 +3301,7 @@ public class ConversationFragment extends XmppFragment } protected void messageSent() { + conversation.setUserSelectedThread(false); mSendingPgpMessage.set(false); this.binding.textinput.setText(""); if (conversation.setCorrectingMessage(null)) { diff --git a/src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java b/src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java index 66a355fe46fb2316d89242c547807fc5ad92476d..ccbfb96eb412a8956f8d60c3e37161dd04f2859d 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java +++ b/src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java @@ -49,7 +49,7 @@ public class SendButtonTool { final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity); final boolean empty = text.length() == 0; final boolean conference = c.getMode() == Conversation.MODE_MULTI; - if (c.getCorrectingMessage() != null && (empty || text.equals(c.getCorrectingMessage().getBody()))) { + if (c.getCorrectingMessage() != null && (empty || (text.equals(c.getCorrectingMessage().getBody()) && (c.getThread() == c.getCorrectingMessage().getThread() || (c.getThread() != null && c.getThread().equals(c.getCorrectingMessage().getThread())))))) { return SendButtonAction.CANCEL; } else if (conference && !c.getAccount().httpUploadAvailable()) { if (empty && c.getNextCounterpart() != null) {