1package eu.siacs.conversations.xmpp.pep;
2
3import android.os.Bundle;
4import eu.siacs.conversations.xml.Element;
5import eu.siacs.conversations.xml.Namespace;
6import im.conversations.android.xmpp.model.stanza.Iq;
7
8public class PublishOptions {
9
10 private PublishOptions() {}
11
12 public static Bundle openAccess() {
13 final Bundle options = new Bundle();
14 options.putString("pubsub#access_model", "open");
15 options.putString("pubsub#notify_delete", "true");
16 return options;
17 }
18
19 public static Bundle presenceAccess() {
20 final Bundle options = new Bundle();
21 options.putString("pubsub#access_model", "presence");
22 options.putString("pubsub#notify_delete", "true");
23 return options;
24 }
25
26 public static Bundle persistentWhitelistAccess() {
27 final Bundle options = new Bundle();
28 options.putString("pubsub#persist_items", "true");
29 options.putString("pubsub#access_model", "whitelist");
30 return options;
31 }
32
33 public static Bundle persistentWhitelistAccessMaxItems() {
34 final Bundle options = new Bundle();
35 options.putString("pubsub#persist_items", "true");
36 options.putString("pubsub#access_model", "whitelist");
37 options.putString("pubsub#send_last_published_item", "never");
38 options.putString("pubsub#max_items", "max");
39 options.putString("pubsub#notify_delete", "true");
40 options.putString(
41 "pubsub#notify_retract", "true"); // one could also set notify=true on the retract
42
43 return options;
44 }
45
46 public static boolean preconditionNotMet(Iq response) {
47 final Element error =
48 response.getType() == Iq.Type.ERROR ? response.findChild("error") : null;
49 return error != null && error.hasChild("precondition-not-met", Namespace.PUBSUB_ERROR);
50 }
51}