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