From b9086158a6de3188cbe76b37a7d83ce3d0d4dd69 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 27 Jan 2019 22:55:40 +0100 Subject: add ability to delete last sent message also on remote devices if message correction is supported and available --- .../pixart/messenger/ui/ConversationFragment.java | 25 +++++++++++++++++++++- src/main/res/values/strings.xml | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src') 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(); }); diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 63255228a..dbe47dfaa 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -874,4 +874,5 @@ Group chat members Join group chat Create group chat + Message was deleted -- cgit v1.2.3