EasyOnboardingInvite.java

 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}