]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Contact.java
Fix storage sync issues
[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 color,
9 int messageExpirationTime,
10 boolean isBlocked,
11 boolean isArchived,
12 boolean isProfileSharingEnabled,
13 boolean isHidden
14 ) {
15
16 private Contact(final Builder builder) {
17 this(builder.givenName,
18 builder.familyName,
19 builder.color,
20 builder.messageExpirationTime,
21 builder.isBlocked,
22 builder.isArchived,
23 builder.isProfileSharingEnabled,
24 builder.isHidden);
25 }
26
27 public static Builder newBuilder() {
28 return new Builder();
29 }
30
31 public static Builder newBuilder(final Contact copy) {
32 Builder builder = new Builder();
33 builder.givenName = copy.givenName();
34 builder.familyName = copy.familyName();
35 builder.color = copy.color();
36 builder.messageExpirationTime = copy.messageExpirationTime();
37 builder.isBlocked = copy.isBlocked();
38 builder.isArchived = copy.isArchived();
39 builder.isProfileSharingEnabled = copy.isProfileSharingEnabled();
40 builder.isHidden = copy.isHidden();
41 return builder;
42 }
43
44 public String getName() {
45 final var noGivenName = Util.isEmpty(givenName);
46 final var noFamilyName = Util.isEmpty(familyName);
47
48 if (noGivenName && noFamilyName) {
49 return "";
50 } else if (noGivenName) {
51 return familyName;
52 } else if (noFamilyName) {
53 return givenName;
54 }
55
56 return givenName + " " + familyName;
57 }
58
59 public static final class Builder {
60
61 private String givenName;
62 private String familyName;
63 private String color;
64 private int messageExpirationTime;
65 private boolean isBlocked;
66 private boolean isArchived;
67 private boolean isProfileSharingEnabled;
68 private boolean isHidden;
69
70 private Builder() {
71 }
72
73 public static Builder newBuilder() {
74 return new Builder();
75 }
76
77 public Builder withGivenName(final String val) {
78 givenName = val;
79 return this;
80 }
81
82 public Builder withFamilyName(final String val) {
83 familyName = val;
84 return this;
85 }
86
87 public Builder withColor(final String val) {
88 color = val;
89 return this;
90 }
91
92 public Builder withMessageExpirationTime(final int val) {
93 messageExpirationTime = val;
94 return this;
95 }
96
97 public Builder withIsBlocked(final boolean val) {
98 isBlocked = val;
99 return this;
100 }
101
102 public Builder withIsArchived(final boolean val) {
103 isArchived = val;
104 return this;
105 }
106
107 public Builder withIsProfileSharingEnabled(final boolean val) {
108 isProfileSharingEnabled = val;
109 return this;
110 }
111
112 public Builder withIsHidden(final boolean val) {
113 isHidden = val;
114 return this;
115 }
116
117 public Contact build() {
118 return new Contact(this);
119 }
120 }
121 }