From 132b27adeef3ab4d305facda7dd035015b00766f Mon Sep 17 00:00:00 2001 From: steckbrief Date: Sat, 5 May 2018 20:28:04 +0200 Subject: introduces new message state model --- .../utils/messaging/MessageReceiptUtil.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java (limited to 'src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java') 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 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); + } +} -- cgit v1.2.3