aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/utils/messaging/MessageReceiptUtil.java
blob: a3ac1c3a8ba3c35661f687095fb1e6cfc243dea7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
    }
}