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