PresenceGenerator.java

 1package eu.siacs.conversations.generator;
 2
 3import eu.siacs.conversations.entities.Account;
 4import eu.siacs.conversations.entities.MucOptions;
 5import eu.siacs.conversations.services.XmppConnectionService;
 6import eu.siacs.conversations.xmpp.manager.PresenceManager;
 7import im.conversations.android.xmpp.model.stanza.Presence;
 8
 9public class PresenceGenerator extends AbstractGenerator {
10
11    public PresenceGenerator(XmppConnectionService service) {
12        super(service);
13    }
14
15    public im.conversations.android.xmpp.model.stanza.Presence selfPresence(Account account, Presence.Availability status) {
16        return selfPresence(account, status, true, null);
17    }
18
19    public im.conversations.android.xmpp.model.stanza.Presence selfPresence(
20            final Account account, final Presence.Availability status, final boolean personal, final String nickname) {
21        final var connection = account.getXmppConnection();
22        if (connection == null) {
23            return new Presence();
24        }
25        final var packet = connection.getManager(PresenceManager.class).getPresence(status, personal);
26        if (nickname != null) {
27            final var nick = packet.addChild("nick", "http://jabber.org/protocol/nick");
28            nick.setContent(nickname);
29        }
30        return packet;
31    }
32
33    public im.conversations.android.xmpp.model.stanza.Presence leave(final MucOptions mucOptions) {
34        im.conversations.android.xmpp.model.stanza.Presence presence =
35                new im.conversations.android.xmpp.model.stanza.Presence();
36        presence.setTo(mucOptions.getSelf().getFullJid());
37        presence.setFrom(mucOptions.getAccount().getJid());
38        presence.setAttribute("type", "unavailable");
39        return presence;
40    }
41
42    public im.conversations.android.xmpp.model.stanza.Presence sendOfflinePresence(
43            Account account) {
44        im.conversations.android.xmpp.model.stanza.Presence packet =
45                new im.conversations.android.xmpp.model.stanza.Presence();
46        packet.setFrom(account.getJid());
47        packet.setAttribute("type", "unavailable");
48        return packet;
49    }
50}