]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Contact.java
Update libsignal-service-java
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / Contact.java
1 package org.asamk.signal.manager.api;
2
3 import org.whispersystems.signalservice.internal.util.Util;
4
5 public record Contact(
6 String givenName,
7 String familyName,
8 String nickName,
9 String nickNameGivenName,
10 String nickNameFamilyName,
11 String note,
12 String color,
13 int messageExpirationTime,
14 int messageExpirationTimeVersion,
15 long muteUntil,
16 boolean hideStory,
17 boolean isBlocked,
18 boolean isArchived,
19 boolean isProfileSharingEnabled,
20 boolean isHidden,
21 Long unregisteredTimestamp
22 ) {
23
24 private Contact(final Builder builder) {
25 this(builder.givenName,
26 builder.familyName,
27 builder.nickName,
28 builder.nickNameGivenName,
29 builder.nickNameFamilyName,
30 builder.note,
31 builder.color,
32 builder.messageExpirationTime,
33 builder.messageExpirationTimeVersion,
34 builder.muteUntil,
35 builder.hideStory,
36 builder.isBlocked,
37 builder.isArchived,
38 builder.isProfileSharingEnabled,
39 builder.isHidden,
40 builder.unregisteredTimestamp);
41 }
42
43 public static Builder newBuilder() {
44 return new Builder();
45 }
46
47 public static Builder newBuilder(final Contact copy) {
48 Builder builder = new Builder();
49 builder.givenName = copy.givenName();
50 builder.familyName = copy.familyName();
51 builder.nickName = copy.nickName();
52 builder.nickNameGivenName = copy.nickNameGivenName();
53 builder.nickNameFamilyName = copy.nickNameFamilyName();
54 builder.note = copy.note();
55 builder.color = copy.color();
56 builder.messageExpirationTime = copy.messageExpirationTime();
57 builder.messageExpirationTimeVersion = copy.messageExpirationTimeVersion();
58 builder.muteUntil = copy.muteUntil();
59 builder.hideStory = copy.hideStory();
60 builder.isBlocked = copy.isBlocked();
61 builder.isArchived = copy.isArchived();
62 builder.isProfileSharingEnabled = copy.isProfileSharingEnabled();
63 builder.isHidden = copy.isHidden();
64 builder.unregisteredTimestamp = copy.unregisteredTimestamp();
65 return builder;
66 }
67
68 public String getName() {
69 final var noGivenName = Util.isEmpty(givenName);
70 final var noFamilyName = Util.isEmpty(familyName);
71
72 if (noGivenName && noFamilyName) {
73 return "";
74 } else if (noGivenName) {
75 return familyName;
76 } else if (noFamilyName) {
77 return givenName;
78 }
79
80 return givenName + " " + familyName;
81 }
82
83 public static final class Builder {
84
85 private String givenName;
86 private String familyName;
87 private String nickName;
88 private String nickNameGivenName;
89 private String nickNameFamilyName;
90 private String note;
91 private String color;
92 private int messageExpirationTime;
93 private int messageExpirationTimeVersion = 1;
94 private long muteUntil;
95 private boolean hideStory;
96 private boolean isBlocked;
97 private boolean isArchived;
98 private boolean isProfileSharingEnabled;
99 private boolean isHidden;
100 private Long unregisteredTimestamp;
101
102 private Builder() {
103 }
104
105 public static Builder newBuilder() {
106 return new Builder();
107 }
108
109 public Builder withGivenName(final String val) {
110 givenName = val;
111 return this;
112 }
113
114 public Builder withFamilyName(final String val) {
115 familyName = val;
116 return this;
117 }
118
119 public Builder withNickName(final String val) {
120 nickName = val;
121 return this;
122 }
123
124 public Builder withNickNameGivenName(final String val) {
125 nickNameGivenName = val;
126 return this;
127 }
128
129 public Builder withNickNameFamilyName(final String val) {
130 nickNameFamilyName = val;
131 return this;
132 }
133
134 public Builder withNote(final String val) {
135 note = val;
136 return this;
137 }
138
139 public Builder withColor(final String val) {
140 color = val;
141 return this;
142 }
143
144 public Builder withMessageExpirationTime(final int val) {
145 messageExpirationTime = val;
146 return this;
147 }
148
149 public Builder withMessageExpirationTimeVersion(final int val) {
150 messageExpirationTimeVersion = val;
151 return this;
152 }
153
154 public Builder withMuteUntil(final long val) {
155 muteUntil = val;
156 return this;
157 }
158
159 public Builder withHideStory(final boolean val) {
160 hideStory = val;
161 return this;
162 }
163
164 public Builder withIsBlocked(final boolean val) {
165 isBlocked = val;
166 return this;
167 }
168
169 public Builder withIsArchived(final boolean val) {
170 isArchived = val;
171 return this;
172 }
173
174 public Builder withIsProfileSharingEnabled(final boolean val) {
175 isProfileSharingEnabled = val;
176 return this;
177 }
178
179 public Builder withIsHidden(final boolean val) {
180 isHidden = val;
181 return this;
182 }
183
184 public Builder withUnregisteredTimestamp(final Long val) {
185 unregisteredTimestamp = val;
186 return this;
187 }
188
189 public Contact build() {
190 return new Contact(this);
191 }
192 }
193 }