1 package org
.asamk
.signal
.manager
.storage
.recipients
;
3 import org
.whispersystems
.signalservice
.internal
.util
.Util
;
5 import java
.util
.Collections
;
10 private final long lastUpdateTimestamp
;
12 private final String givenName
;
14 private final String familyName
;
16 private final String about
;
18 private final String aboutEmoji
;
20 private final String avatarUrlPath
;
22 private final UnidentifiedAccessMode unidentifiedAccessMode
;
24 private final Set
<Capability
> capabilities
;
27 final long lastUpdateTimestamp
,
28 final String givenName
,
29 final String familyName
,
31 final String aboutEmoji
,
32 final String avatarUrlPath
,
33 final UnidentifiedAccessMode unidentifiedAccessMode
,
34 final Set
<Capability
> capabilities
36 this.lastUpdateTimestamp
= lastUpdateTimestamp
;
37 this.givenName
= givenName
;
38 this.familyName
= familyName
;
40 this.aboutEmoji
= aboutEmoji
;
41 this.avatarUrlPath
= avatarUrlPath
;
42 this.unidentifiedAccessMode
= unidentifiedAccessMode
;
43 this.capabilities
= capabilities
;
46 private Profile(final Builder builder
) {
47 lastUpdateTimestamp
= builder
.lastUpdateTimestamp
;
48 givenName
= builder
.givenName
;
49 familyName
= builder
.familyName
;
50 about
= builder
.about
;
51 aboutEmoji
= builder
.aboutEmoji
;
52 avatarUrlPath
= builder
.avatarUrlPath
;
53 unidentifiedAccessMode
= builder
.unidentifiedAccessMode
;
54 capabilities
= builder
.capabilities
;
57 public static Builder
newBuilder() {
61 public static Builder
newBuilder(final Profile copy
) {
62 Builder builder
= new Builder();
63 builder
.lastUpdateTimestamp
= copy
.getLastUpdateTimestamp();
64 builder
.givenName
= copy
.getGivenName();
65 builder
.familyName
= copy
.getFamilyName();
66 builder
.about
= copy
.getAbout();
67 builder
.aboutEmoji
= copy
.getAboutEmoji();
68 builder
.avatarUrlPath
= copy
.getAvatarUrlPath();
69 builder
.unidentifiedAccessMode
= copy
.getUnidentifiedAccessMode();
70 builder
.capabilities
= copy
.getCapabilities();
74 public long getLastUpdateTimestamp() {
75 return lastUpdateTimestamp
;
78 public String
getGivenName() {
82 public String
getFamilyName() {
86 public String
getInternalServiceName() {
87 if (familyName
== null) {
88 return givenName
== null ?
"" : givenName
;
90 return String
.join("\0", givenName
== null ?
"" : givenName
, familyName
);
93 public String
getDisplayName() {
94 final var noGivenName
= Util
.isEmpty(givenName
);
95 final var noFamilyName
= Util
.isEmpty(familyName
);
97 if (noGivenName
&& noFamilyName
) {
99 } else if (noGivenName
) {
101 } else if (noFamilyName
) {
105 return givenName
+ " " + familyName
;
108 public String
getAbout() {
112 public String
getAboutEmoji() {
116 public String
getAvatarUrlPath() {
117 return avatarUrlPath
;
120 public UnidentifiedAccessMode
getUnidentifiedAccessMode() {
121 return unidentifiedAccessMode
;
124 public Set
<Capability
> getCapabilities() {
128 public enum UnidentifiedAccessMode
{
134 static UnidentifiedAccessMode
valueOfOrUnknown(String value
) {
136 return valueOf(value
);
137 } catch (IllegalArgumentException ignored
) {
143 public enum Capability
{
150 static Capability
valueOfOrNull(String value
) {
152 return valueOf(value
);
153 } catch (IllegalArgumentException ignored
) {
159 public static final class Builder
{
161 private String givenName
;
162 private String familyName
;
163 private String about
;
164 private String aboutEmoji
;
165 private String avatarUrlPath
;
166 private UnidentifiedAccessMode unidentifiedAccessMode
= UnidentifiedAccessMode
.UNKNOWN
;
167 private Set
<Capability
> capabilities
= Collections
.emptySet();
168 private long lastUpdateTimestamp
= 0;
173 public Builder
withGivenName(final String val
) {
178 public Builder
withFamilyName(final String val
) {
183 public Builder
withAbout(final String val
) {
188 public Builder
withAboutEmoji(final String val
) {
193 public Builder
withAvatarUrlPath(final String val
) {
198 public Builder
withUnidentifiedAccessMode(final UnidentifiedAccessMode val
) {
199 unidentifiedAccessMode
= val
;
203 public Builder
withCapabilities(final Set
<Capability
> val
) {
208 public Profile
build() {
209 return new Profile(this);
212 public Builder
withLastUpdateTimestamp(final long val
) {
213 lastUpdateTimestamp
= val
;