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(
16            Account account, Presence.Availability status) {
17        return selfPresence(account, status, true);
18    }
19
20    public im.conversations.android.xmpp.model.stanza.Presence selfPresence(
21            final Account account, final Presence.Availability status, final boolean personal) {
22        final var connection = account.getXmppConnection();
23        if (connection == null) {
24            return new Presence();
25        }
26        return connection.getManager(PresenceManager.class).getPresence(status, personal);
27    }
28
29    public im.conversations.android.xmpp.model.stanza.Presence leave(final MucOptions mucOptions) {
30        im.conversations.android.xmpp.model.stanza.Presence presence =
31                new im.conversations.android.xmpp.model.stanza.Presence();
32        presence.setTo(mucOptions.getSelf().getFullJid());
33        presence.setFrom(mucOptions.getAccount().getJid());
34        presence.setAttribute("type", "unavailable");
35        return presence;
36    }
37
38    public im.conversations.android.xmpp.model.stanza.Presence sendOfflinePresence(
39            Account account) {
40        im.conversations.android.xmpp.model.stanza.Presence packet =
41                new im.conversations.android.xmpp.model.stanza.Presence();
42        packet.setFrom(account.getJid());
43        packet.setAttribute("type", "unavailable");
44        return packet;
45    }
46}