aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java b/src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java
new file mode 100644
index 00000000..a3ac1c3a
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java
@@ -0,0 +1,41 @@
+package de.thedevstack.conversationsplus.utils.messaging;
+
+import java.util.ArrayList;
+
+import de.thedevstack.conversationsplus.entities.Account;
+import de.thedevstack.conversationsplus.entities.Conversation;
+import de.thedevstack.conversationsplus.entities.Message;
+import de.thedevstack.conversationsplus.enums.MessageConfirmation;
+import de.thedevstack.conversationsplus.utils.XmppSendUtil;
+import de.thedevstack.conversationsplus.xml.Element;
+import de.thedevstack.conversationsplus.xmpp.chatmarkers.ChatMarkers;
+import de.thedevstack.conversationsplus.xmpp.receipts.MessageDeliveryReceipts;
+import de.thedevstack.conversationsplus.xmpp.stanzas.MessagePacket;
+
+/**
+ */
+public final class MessageReceiptUtil {
+ public static void sendMessageReceipts(Message message) {
+ MessageConfirmation confirmation = message.getConfirmation();
+ ArrayList<Element> receipts = new ArrayList<>();
+ if (MessageConfirmation.DELIVERY_RECEIPT_CHAT_MARKERS == confirmation) {
+ receipts.add(ChatMarkers.RECEIVED.getXmlElement());
+ receipts.add(MessageDeliveryReceipts.RECEIVED.getXmlElement());
+ } else if (MessageConfirmation.CHAT_MARKERS == confirmation) {
+ receipts.add(ChatMarkers.RECEIVED.getXmlElement());
+ } else {
+ receipts.add(MessageDeliveryReceipts.RECEIVED.getXmlElement());
+ }
+
+ Account account = message.getConversation().getAccount();
+ MessagePacket receivedPacket = new MessagePacket();
+ receivedPacket.setType((message.getConversation().getMode() == Conversation.MODE_SINGLE ? MessagePacket.TYPE_CHAT : MessagePacket.TYPE_GROUPCHAT));
+ receivedPacket.setTo(message.getCounterpart());
+ receivedPacket.setFrom(account.getJid());
+ for (Element receipt : receipts) {
+ receivedPacket.addChild(receipt).setAttribute("id", message.getRemoteMsgId());
+ }
+
+ XmppSendUtil.sendMessagePacket(account, receivedPacket);
+ }
+}