1package eu.siacs.conversations.utils;
2
3import android.os.Parcel;
4import android.os.Parcelable;
5
6import com.google.common.collect.ImmutableList;
7
8import java.util.Collections;
9import java.util.List;
10
11import eu.siacs.conversations.entities.Account;
12import eu.siacs.conversations.services.QuickConversationsService;
13import eu.siacs.conversations.services.XmppConnectionService;
14import eu.siacs.conversations.xmpp.XmppConnection;
15
16public class EasyOnboardingInvite implements Parcelable {
17
18 private String domain;
19 private String uri;
20 private String landingUrl;
21
22 protected EasyOnboardingInvite(Parcel in) {
23 domain = in.readString();
24 uri = in.readString();
25 landingUrl = in.readString();
26 }
27
28 public EasyOnboardingInvite(String domain, String uri, String landingUrl) {
29 this.domain = domain;
30 this.uri = uri;
31 this.landingUrl = landingUrl;
32 }
33
34 @Override
35 public void writeToParcel(Parcel dest, int flags) {
36 dest.writeString(domain);
37 dest.writeString(uri);
38 dest.writeString(landingUrl);
39 }
40
41 @Override
42 public int describeContents() {
43 return 0;
44 }
45
46 public static final Creator<EasyOnboardingInvite> CREATOR = new Creator<EasyOnboardingInvite>() {
47 @Override
48 public EasyOnboardingInvite createFromParcel(Parcel in) {
49 return new EasyOnboardingInvite(in);
50 }
51
52 @Override
53 public EasyOnboardingInvite[] newArray(int size) {
54 return new EasyOnboardingInvite[size];
55 }
56 };
57
58 public static boolean anyHasSupport(final XmppConnectionService service) {
59 if (QuickConversationsService.isQuicksy()) {
60 return false;
61 }
62 return getSupportingAccounts(service).size() > 0;
63
64 }
65
66 public static List<Account> getSupportingAccounts(final XmppConnectionService service) {
67 final ImmutableList.Builder<Account> supportingAccountsBuilder = new ImmutableList.Builder<>();
68 final List<Account> accounts = service == null ? Collections.emptyList() : service.getAccounts();
69 for(Account account : accounts) {
70 final XmppConnection xmppConnection = account.getXmppConnection();
71 if (xmppConnection != null && xmppConnection.getFeatures().easyOnboardingInvites()) {
72 supportingAccountsBuilder.add(account);
73 }
74 }
75 return supportingAccountsBuilder.build();
76 }
77
78 public String getUri() {
79 return uri;
80 }
81
82 public String getLandingUrl() {
83 return landingUrl;
84 }
85
86 public String getDomain() {
87 return domain;
88 }
89
90 public interface OnInviteRequested {
91 void inviteRequested(EasyOnboardingInvite invite);
92 void inviteRequestFailed(String message);
93 }
94}