UnifiedPushManager.java

 1package eu.siacs.conversations.xmpp.manager;
 2
 3import eu.siacs.conversations.services.XmppConnectionService;
 4import eu.siacs.conversations.xmpp.Jid;
 5import eu.siacs.conversations.xmpp.XmppConnection;
 6import im.conversations.android.xmpp.model.error.Condition;
 7import im.conversations.android.xmpp.model.error.Error;
 8import im.conversations.android.xmpp.model.stanza.Iq;
 9import im.conversations.android.xmpp.model.up.Push;
10
11public class UnifiedPushManager extends AbstractManager {
12
13    private final XmppConnectionService service;
14
15    public UnifiedPushManager(
16            final XmppConnectionService service, final XmppConnection connection) {
17        super(service, connection);
18        this.service = service;
19    }
20
21    public void push(final Iq packet) {
22        final Jid transport = packet.getFrom();
23        final var push = packet.getOnlyExtension(Push.class);
24        if (push == null || transport == null) {
25            connection.sendErrorFor(packet, Error.Type.MODIFY, new Condition.BadRequest());
26            return;
27        }
28        if (service.processUnifiedPushMessage(getAccount(), transport, push)) {
29            connection.sendResultFor(packet);
30        } else {
31            connection.sendErrorFor(packet, Error.Type.CANCEL, new Condition.ItemNotFound());
32        }
33    }
34}