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 UnidentifiedAccessMode unidentifiedAccessMode
;
22 private final Set
<Capability
> capabilities
;
25 final long lastUpdateTimestamp
,
26 final String givenName
,
27 final String familyName
,
29 final String aboutEmoji
,
30 final UnidentifiedAccessMode unidentifiedAccessMode
,
31 final Set
<Capability
> capabilities
33 this.lastUpdateTimestamp
= lastUpdateTimestamp
;
34 this.givenName
= givenName
;
35 this.familyName
= familyName
;
37 this.aboutEmoji
= aboutEmoji
;
38 this.unidentifiedAccessMode
= unidentifiedAccessMode
;
39 this.capabilities
= capabilities
;
42 private Profile(final Builder builder
) {
43 lastUpdateTimestamp
= builder
.lastUpdateTimestamp
;
44 givenName
= builder
.givenName
;
45 familyName
= builder
.familyName
;
46 about
= builder
.about
;
47 aboutEmoji
= builder
.aboutEmoji
;
48 unidentifiedAccessMode
= builder
.unidentifiedAccessMode
;
49 capabilities
= builder
.capabilities
;
52 public static Builder
newBuilder() {
56 public static Builder
newBuilder(final Profile copy
) {
57 Builder builder
= new Builder();
58 builder
.lastUpdateTimestamp
= copy
.getLastUpdateTimestamp();
59 builder
.givenName
= copy
.getGivenName();
60 builder
.familyName
= copy
.getFamilyName();
61 builder
.about
= copy
.getAbout();
62 builder
.aboutEmoji
= copy
.getAboutEmoji();
63 builder
.unidentifiedAccessMode
= copy
.getUnidentifiedAccessMode();
64 builder
.capabilities
= copy
.getCapabilities();
68 public long getLastUpdateTimestamp() {
69 return lastUpdateTimestamp
;
72 public String
getGivenName() {
76 public String
getFamilyName() {
80 public String
getInternalServiceName() {
81 if (familyName
== null) {
82 return givenName
== null ?
"" : givenName
;
84 return String
.join("\0", givenName
== null ?
"" : givenName
, familyName
);
87 public String
getDisplayName() {
88 final var noGivenName
= Util
.isEmpty(givenName
);
89 final var noFamilyName
= Util
.isEmpty(familyName
);
91 if (noGivenName
&& noFamilyName
) {
93 } else if (noGivenName
) {
95 } else if (noFamilyName
) {
99 return givenName
+ " " + familyName
;
102 public String
getAbout() {
106 public String
getAboutEmoji() {
110 public UnidentifiedAccessMode
getUnidentifiedAccessMode() {
111 return unidentifiedAccessMode
;
114 public Set
<Capability
> getCapabilities() {
118 public enum UnidentifiedAccessMode
{
124 static UnidentifiedAccessMode
valueOfOrUnknown(String value
) {
126 return valueOf(value
);
127 } catch (IllegalArgumentException ignored
) {
133 public enum Capability
{
138 static Capability
valueOfOrNull(String value
) {
140 return valueOf(value
);
141 } catch (IllegalArgumentException ignored
) {
147 public static final class Builder
{
149 private String givenName
;
150 private String familyName
;
151 private String about
;
152 private String aboutEmoji
;
153 private UnidentifiedAccessMode unidentifiedAccessMode
= UnidentifiedAccessMode
.UNKNOWN
;
154 private Set
<Capability
> capabilities
= Collections
.emptySet();
155 private long lastUpdateTimestamp
= 0;
160 public Builder
withGivenName(final String val
) {
165 public Builder
withFamilyName(final String val
) {
170 public Builder
withAbout(final String val
) {
175 public Builder
withAboutEmoji(final String val
) {
180 public Builder
withUnidentifiedAccessMode(final UnidentifiedAccessMode val
) {
181 unidentifiedAccessMode
= val
;
185 public Builder
withCapabilities(final Set
<Capability
> val
) {
190 public Profile
build() {
191 return new Profile(this);
194 public Builder
withLastUpdateTimestamp(final long val
) {
195 lastUpdateTimestamp
= val
;