]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/profiles/SignalProfile.java
d55e7e6cd64a0a2eeb1edc2a67abfc3ccfa7d1bb
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / profiles / SignalProfile.java
1 package org.asamk.signal.manager.storage.profiles;
2
3 import com.fasterxml.jackson.annotation.JsonIgnore;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5
6 import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
7
8 public class SignalProfile {
9
10 @JsonProperty
11 private final String identityKey;
12
13 @JsonProperty
14 private final String name;
15
16 @JsonProperty
17 private final String about;
18
19 @JsonProperty
20 private final String aboutEmoji;
21
22 @JsonProperty
23 private final String unidentifiedAccess;
24
25 @JsonProperty
26 private final boolean unrestrictedUnidentifiedAccess;
27
28 @JsonProperty
29 private final Capabilities capabilities;
30
31 public SignalProfile(
32 final String identityKey,
33 final String name,
34 final String about,
35 final String aboutEmoji,
36 final String unidentifiedAccess,
37 final boolean unrestrictedUnidentifiedAccess,
38 final SignalServiceProfile.Capabilities capabilities
39 ) {
40 this.identityKey = identityKey;
41 this.name = name;
42 this.about = about;
43 this.aboutEmoji = aboutEmoji;
44 this.unidentifiedAccess = unidentifiedAccess;
45 this.unrestrictedUnidentifiedAccess = unrestrictedUnidentifiedAccess;
46 this.capabilities = new Capabilities();
47 this.capabilities.storage = capabilities.isStorage();
48 this.capabilities.gv1Migration = capabilities.isGv1Migration();
49 this.capabilities.gv2 = capabilities.isGv2();
50 }
51
52 public SignalProfile(
53 @JsonProperty("identityKey") final String identityKey,
54 @JsonProperty("name") final String name,
55 @JsonProperty("about") final String about,
56 @JsonProperty("aboutEmoji") final String aboutEmoji,
57 @JsonProperty("unidentifiedAccess") final String unidentifiedAccess,
58 @JsonProperty("unrestrictedUnidentifiedAccess") final boolean unrestrictedUnidentifiedAccess,
59 @JsonProperty("capabilities") final Capabilities capabilities
60 ) {
61 this.identityKey = identityKey;
62 this.name = name;
63 this.about = about;
64 this.aboutEmoji = aboutEmoji;
65 this.unidentifiedAccess = unidentifiedAccess;
66 this.unrestrictedUnidentifiedAccess = unrestrictedUnidentifiedAccess;
67 this.capabilities = capabilities;
68 }
69
70 public String getIdentityKey() {
71 return identityKey;
72 }
73
74 public String getName() {
75 return name;
76 }
77
78 public String getDisplayName() {
79 // First name and last name (if set) are separated by a NULL char + trim space in case only one is filled
80 return name == null ? null : name.replace("\0", " ").trim();
81 }
82
83 public String getAbout() {
84 return about;
85 }
86
87 public String getAboutEmoji() {
88 return aboutEmoji;
89 }
90
91 public String getUnidentifiedAccess() {
92 return unidentifiedAccess;
93 }
94
95 public boolean isUnrestrictedUnidentifiedAccess() {
96 return unrestrictedUnidentifiedAccess;
97 }
98
99 public Capabilities getCapabilities() {
100 return capabilities;
101 }
102
103 @Override
104 public String toString() {
105 return "SignalProfile{"
106 + "identityKey='"
107 + identityKey
108 + '\''
109 + ", name='"
110 + name
111 + '\''
112 + ", about='"
113 + about
114 + '\''
115 + ", aboutEmoji='"
116 + aboutEmoji
117 + '\''
118 + ", unidentifiedAccess='"
119 + unidentifiedAccess
120 + '\''
121 + ", unrestrictedUnidentifiedAccess="
122 + unrestrictedUnidentifiedAccess
123 + ", capabilities="
124 + capabilities
125 + '}';
126 }
127
128 public static class Capabilities {
129
130 @JsonIgnore
131 public boolean uuid;
132
133 @JsonProperty
134 public boolean gv2;
135
136 @JsonProperty
137 public boolean storage;
138
139 @JsonProperty
140 public boolean gv1Migration;
141 }
142 }