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}