]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Contact.java
Implement message expiration timer version
[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.color = copy.color();
53 builder.messageExpirationTime = copy.messageExpirationTime();
54 builder.muteUntil = copy.muteUntil();
55 builder.hideStory = copy.hideStory();
56 builder.isBlocked = copy.isBlocked();
57 builder.isArchived = copy.isArchived();
58 builder.isProfileSharingEnabled = copy.isProfileSharingEnabled();
59 builder.isHidden = copy.isHidden();
60 builder.unregisteredTimestamp = copy.unregisteredTimestamp();
61 return builder;
62 }
63
64 public String getName() {
65 final var noGivenName = Util.isEmpty(givenName);
66 final var noFamilyName = Util.isEmpty(familyName);
67
68 if (noGivenName && noFamilyName) {
69 return "";
70 } else if (noGivenName) {
71 return familyName;
72 } else if (noFamilyName) {
73 return givenName;
74 }
75
76 return givenName + " " + familyName;
77 }
78
79 public static final class Builder {
80
81 private String givenName;
82 private String familyName;
83 private String nickName;
84 private String nickNameGivenName;
85 private String nickNameFamilyName;
86 private String note;
87 private String color;
88 private int messageExpirationTime;
89 private int messageExpirationTimeVersion = 1;
90 private long muteUntil;
91 private boolean hideStory;
92 private boolean isBlocked;
93 private boolean isArchived;
94 private boolean isProfileSharingEnabled;
95 private boolean isHidden;
96 private Long unregisteredTimestamp;
97
98 private Builder() {
99 }
100
101 public static Builder newBuilder() {
102 return new Builder();
103 }
104
105 public Builder withGivenName(final String val) {
106 givenName = val;
107 return this;
108 }
109
110 public Builder withFamilyName(final String val) {
111 familyName = val;
112 return this;
113 }
114
115 public Builder withNickName(final String val) {
116 nickName = val;
117 return this;
118 }
119
120 public Builder withNickNameGivenName(final String val) {
121 nickNameGivenName = val;
122 return this;
123 }
124
125 public Builder withNickNameFamilyName(final String val) {
126 nickNameFamilyName = val;
127 return this;
128 }
129
130 public Builder withNote(final String val) {
131 note = val;
132 return this;
133 }
134
135 public Builder withColor(final String val) {
136 color = val;
137 return this;
138 }
139
140 public Builder withMessageExpirationTime(final int val) {
141 messageExpirationTime = val;
142 return this;
143 }
144
145 public Builder withMessageExpirationTimeVersion(final int val) {
146 messageExpirationTimeVersion = val;
147 return this;
148 }
149
150 public Builder withMuteUntil(final long val) {
151 muteUntil = val;
152 return this;
153 }
154
155 public Builder withHideStory(final boolean val) {
156 hideStory = val;
157 return this;
158 }
159
160 public Builder withIsBlocked(final boolean val) {
161 isBlocked = val;
162 return this;
163 }
164
165 public Builder withIsArchived(final boolean val) {
166 isArchived = val;
167 return this;
168 }
169
170 public Builder withIsProfileSharingEnabled(final boolean val) {
171 isProfileSharingEnabled = val;
172 return this;
173 }
174
175 public Builder withIsHidden(final boolean val) {
176 isHidden = val;
177 return this;
178 }
179
180 public Builder withUnregisteredTimestamp(final Long val) {
181 unregisteredTimestamp = val;
182 return this;
183 }
184
185 public Contact build() {
186 return new Contact(this);
187 }
188 }
189 }