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); } }