diff options
author | steckbrief <steckbrief@chefmail.de> | 2018-05-05 20:28:04 +0200 |
---|---|---|
committer | steckbrief <steckbrief@chefmail.de> | 2018-05-06 13:46:22 +0200 |
commit | 132b27adeef3ab4d305facda7dd035015b00766f (patch) | |
tree | ce90c05d96d747ea1f6cf80129462119a1291dc1 /src/main/java/de/thedevstack/conversationsplus/utils/messaging | |
parent | 853f50e43f68599774469dd12240f35800144991 (diff) |
introduces new message state model
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/utils/messaging')
-rw-r--r-- | src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java | 41 |
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); + } +} |