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}