aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-01-27 22:55:40 +0100
committerChristian Schneppe <christian@pix-art.de>2019-01-27 22:55:40 +0100
commitb9086158a6de3188cbe76b37a7d83ce3d0d4dd69 (patch)
treef303e097a01e9359cadc6bccab18fa93d61d0dbb /src/main/java/de/pixart/messenger/ui/ConversationFragment.java
parent480f18449b8da6619efc7dd8c7e26e5757c9648d (diff)
add ability to delete last sent message also on remote devices
if message correction is supported and available
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationFragment.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index 1592f9d94..dbbcea265 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -1855,13 +1855,36 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
}
private void deleteMessage(Message message) {
+ while (message.mergeable(message.next())) {
+ message = message.next();
+ }
final Conversation conversation = (Conversation) message.getConversation();
+ Message relevantForCorrection = message;
+ while (relevantForCorrection.mergeable(relevantForCorrection.next())) {
+ relevantForCorrection = relevantForCorrection.next();
+ }
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setNegativeButton(R.string.cancel, null);
builder.setTitle(R.string.delete_message_dialog);
builder.setMessage(R.string.delete_message_dialog_msg);
+ Message finalRelevantForCorrection = relevantForCorrection;
+ Message finalMessage = message;
builder.setPositiveButton(R.string.confirm, (dialog, which) -> {
- activity.xmppConnectionService.deleteMessage(conversation, message);
+ if (finalRelevantForCorrection.getType() == Message.TYPE_TEXT
+ && !finalMessage.isGeoUri()
+ && finalRelevantForCorrection.isLastCorrectableMessage()
+ && finalMessage.getConversation() instanceof Conversation
+ && (((Conversation) finalMessage.getConversation()).getMucOptions().nonanonymous() || finalMessage.getConversation().getMode() == Conversation.MODE_SINGLE)) {
+ this.conversation.setCorrectingMessage(finalMessage);
+ Message deletedmessage = conversation.getCorrectingMessage();
+ deletedmessage.setBody(getString(R.string.message_deleted));
+ deletedmessage.setEdited(deletedmessage.getUuid());
+ deletedmessage.setUuid(UUID.randomUUID().toString());
+ sendMessage(deletedmessage);
+ activity.xmppConnectionService.deleteMessage(conversation, deletedmessage);
+ refresh();
+ }
+ activity.xmppConnectionService.deleteMessage(conversation, finalMessage);
activity.onConversationsListItemUpdated();
refresh();
});