]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Contact.java
Recreate recipient database with aci column
[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 color,
10 int messageExpirationTime,
11 long muteUntil,
12 boolean hideStory,
13 boolean isBlocked,
14 boolean isArchived,
15 boolean isProfileSharingEnabled,
16 boolean isHidden,
17 Long unregisteredTimestamp
18 ) {
19
20 private Contact(final Builder builder) {
21 this(builder.givenName,
22 builder.familyName,
23 builder.nickName,
24 builder.color,
25 builder.messageExpirationTime,
26 builder.muteUntil,
27 builder.hideStory,
28 builder.isBlocked,
29 builder.isArchived,
30 builder.isProfileSharingEnabled,
31 builder.isHidden,
32 builder.unregisteredTimestamp);
33 }
34
35 public static Builder newBuilder() {
36 return new Builder();
37 }
38
39 public static Builder newBuilder(final Contact copy) {
40 Builder builder = new Builder();
41 builder.givenName = copy.givenName();
42 builder.familyName = copy.familyName();
43 builder.nickName = copy.nickName();
44 builder.color = copy.color();
45 builder.messageExpirationTime = copy.messageExpirationTime();
46 builder.muteUntil = copy.muteUntil();
47 builder.hideStory = copy.hideStory();
48 builder.isBlocked = copy.isBlocked();
49 builder.isArchived = copy.isArchived();
50 builder.isProfileSharingEnabled = copy.isProfileSharingEnabled();
51 builder.isHidden = copy.isHidden();
52 builder.unregisteredTimestamp = copy.unregisteredTimestamp();
53 return builder;
54 }
55
56 public String getName() {
57 final var noGivenName = Util.isEmpty(givenName);
58 final var noFamilyName = Util.isEmpty(familyName);
59
60 if (noGivenName && noFamilyName) {
61 return "";
62 } else if (noGivenName) {
63 return familyName;
64 } else if (noFamilyName) {
65 return givenName;
66 }
67
68 return givenName + " " + familyName;
69 }
70
71 public static final class Builder {
72
73 private String givenName;
74 private String familyName;
75 private String nickName;
76 private String color;
77 private int messageExpirationTime;
78 private long muteUntil;
79 private boolean hideStory;
80 private boolean isBlocked;
81 private boolean isArchived;
82 private boolean isProfileSharingEnabled;
83 private boolean isHidden;
84 private Long unregisteredTimestamp;
85
86 private Builder() {
87 }
88
89 public static Builder newBuilder() {
90 return new Builder();
91 }
92
93 public Builder withGivenName(final String val) {
94 givenName = val;
95 return this;
96 }
97
98 public Builder withFamilyName(final String val) {
99 familyName = val;
100 return this;
101 }
102
103 public Builder withNickName(final String val) {
104 nickName = val;
105 return this;
106 }
107
108 public Builder withColor(final String val) {
109 color = val;
110 return this;
111 }
112
113 public Builder withMessageExpirationTime(final int val) {
114 messageExpirationTime = val;
115 return this;
116 }
117
118 public Builder withMuteUntil(final long val) {
119 muteUntil = val;
120 return this;
121 }
122
123 public Builder withHideStory(final boolean val) {
124 hideStory = val;
125 return this;
126 }
127
128 public Builder withIsBlocked(final boolean val) {
129 isBlocked = val;
130 return this;
131 }
132
133 public Builder withIsArchived(final boolean val) {
134 isArchived = val;
135 return this;
136 }
137
138 public Builder withIsProfileSharingEnabled(final boolean val) {
139 isProfileSharingEnabled = val;
140 return this;
141 }
142
143 public Builder withIsHidden(final boolean val) {
144 isHidden = val;
145 return this;
146 }
147
148 public Builder withUnregisteredTimestamp(final Long val) {
149 unregisteredTimestamp = val;
150 return this;
151 }
152
153 public Contact build() {
154 return new Contact(this);
155 }
156 }
157 }