diff options
author | Christian Schneppe <christian@pix-art.de> | 2019-01-27 22:55:40 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2019-01-27 22:55:40 +0100 |
commit | b9086158a6de3188cbe76b37a7d83ce3d0d4dd69 (patch) | |
tree | f303e097a01e9359cadc6bccab18fa93d61d0dbb /src/main/java/de | |
parent | 480f18449b8da6619efc7dd8c7e26e5757c9648d (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')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 25 |
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(); }); |