]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/UpdateGroup.java
Allow using data URIs for updateGroup/updateProfile avatars
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / UpdateGroup.java
1 package org.asamk.signal.manager.api;
2
3 import org.asamk.signal.manager.groups.GroupLinkState;
4 import org.asamk.signal.manager.groups.GroupPermission;
5
6 import java.util.Set;
7
8 public class UpdateGroup {
9
10 private final String name;
11 private final String description;
12 private final Set<RecipientIdentifier.Single> members;
13 private final Set<RecipientIdentifier.Single> removeMembers;
14 private final Set<RecipientIdentifier.Single> admins;
15 private final Set<RecipientIdentifier.Single> removeAdmins;
16 private final Set<RecipientIdentifier.Single> banMembers;
17 private final Set<RecipientIdentifier.Single> unbanMembers;
18 private final boolean resetGroupLink;
19 private final GroupLinkState groupLinkState;
20 private final GroupPermission addMemberPermission;
21 private final GroupPermission editDetailsPermission;
22 private final String avatarFile;
23 private final Integer expirationTimer;
24 private final Boolean isAnnouncementGroup;
25
26 private UpdateGroup(final Builder builder) {
27 name = builder.name;
28 description = builder.description;
29 members = builder.members;
30 removeMembers = builder.removeMembers;
31 admins = builder.admins;
32 removeAdmins = builder.removeAdmins;
33 banMembers = builder.banMembers;
34 unbanMembers = builder.unbanMembers;
35 resetGroupLink = builder.resetGroupLink;
36 groupLinkState = builder.groupLinkState;
37 addMemberPermission = builder.addMemberPermission;
38 editDetailsPermission = builder.editDetailsPermission;
39 avatarFile = builder.avatarFile;
40 expirationTimer = builder.expirationTimer;
41 isAnnouncementGroup = builder.isAnnouncementGroup;
42 }
43
44 public static Builder newBuilder() {
45 return new Builder();
46 }
47
48 public static Builder newBuilder(final UpdateGroup copy) {
49 return new Builder(copy.name,
50 copy.description,
51 copy.members,
52 copy.removeMembers,
53 copy.admins,
54 copy.removeAdmins,
55 copy.banMembers,
56 copy.unbanMembers,
57 copy.resetGroupLink,
58 copy.groupLinkState,
59 copy.addMemberPermission,
60 copy.editDetailsPermission,
61 copy.avatarFile,
62 copy.expirationTimer,
63 copy.isAnnouncementGroup);
64 }
65
66 public static Builder newBuilder(
67 final String name,
68 final String description,
69 final Set<RecipientIdentifier.Single> members,
70 final Set<RecipientIdentifier.Single> removeMembers,
71 final Set<RecipientIdentifier.Single> admins,
72 final Set<RecipientIdentifier.Single> removeAdmins,
73 final Set<RecipientIdentifier.Single> banMembers,
74 final Set<RecipientIdentifier.Single> unbanMembers,
75 final boolean resetGroupLink,
76 final GroupLinkState groupLinkState,
77 final GroupPermission addMemberPermission,
78 final GroupPermission editDetailsPermission,
79 final String avatarFile,
80 final Integer expirationTimer,
81 final Boolean isAnnouncementGroup
82 ) {
83 return new Builder(name,
84 description,
85 members,
86 removeMembers,
87 admins,
88 removeAdmins,
89 banMembers,
90 unbanMembers,
91 resetGroupLink,
92 groupLinkState,
93 addMemberPermission,
94 editDetailsPermission,
95 avatarFile,
96 expirationTimer,
97 isAnnouncementGroup);
98 }
99
100 public String getName() {
101 return name;
102 }
103
104 public String getDescription() {
105 return description;
106 }
107
108 public Set<RecipientIdentifier.Single> getMembers() {
109 return members;
110 }
111
112 public Set<RecipientIdentifier.Single> getRemoveMembers() {
113 return removeMembers;
114 }
115
116 public Set<RecipientIdentifier.Single> getAdmins() {
117 return admins;
118 }
119
120 public Set<RecipientIdentifier.Single> getRemoveAdmins() {
121 return removeAdmins;
122 }
123
124 public Set<RecipientIdentifier.Single> getBanMembers() {
125 return banMembers;
126 }
127
128 public Set<RecipientIdentifier.Single> getUnbanMembers() {
129 return unbanMembers;
130 }
131
132 public boolean isResetGroupLink() {
133 return resetGroupLink;
134 }
135
136 public GroupLinkState getGroupLinkState() {
137 return groupLinkState;
138 }
139
140 public GroupPermission getAddMemberPermission() {
141 return addMemberPermission;
142 }
143
144 public GroupPermission getEditDetailsPermission() {
145 return editDetailsPermission;
146 }
147
148 public String getAvatarFile() {
149 return avatarFile;
150 }
151
152 public Integer getExpirationTimer() {
153 return expirationTimer;
154 }
155
156 public Boolean getIsAnnouncementGroup() {
157 return isAnnouncementGroup;
158 }
159
160 public static final class Builder {
161
162 private String name;
163 private String description;
164 private Set<RecipientIdentifier.Single> members;
165 private Set<RecipientIdentifier.Single> removeMembers;
166 private Set<RecipientIdentifier.Single> admins;
167 private Set<RecipientIdentifier.Single> removeAdmins;
168 private Set<RecipientIdentifier.Single> banMembers;
169 private Set<RecipientIdentifier.Single> unbanMembers;
170 private boolean resetGroupLink;
171 private GroupLinkState groupLinkState;
172 private GroupPermission addMemberPermission;
173 private GroupPermission editDetailsPermission;
174 private String avatarFile;
175 private Integer expirationTimer;
176 private Boolean isAnnouncementGroup;
177
178 private Builder() {
179 }
180
181 private Builder(
182 final String name,
183 final String description,
184 final Set<RecipientIdentifier.Single> members,
185 final Set<RecipientIdentifier.Single> removeMembers,
186 final Set<RecipientIdentifier.Single> admins,
187 final Set<RecipientIdentifier.Single> removeAdmins,
188 final Set<RecipientIdentifier.Single> banMembers,
189 final Set<RecipientIdentifier.Single> unbanMembers,
190 final boolean resetGroupLink,
191 final GroupLinkState groupLinkState,
192 final GroupPermission addMemberPermission,
193 final GroupPermission editDetailsPermission,
194 final String avatarFile,
195 final Integer expirationTimer,
196 final Boolean isAnnouncementGroup
197 ) {
198 this.name = name;
199 this.description = description;
200 this.members = members;
201 this.removeMembers = removeMembers;
202 this.admins = admins;
203 this.removeAdmins = removeAdmins;
204 this.banMembers = banMembers;
205 this.unbanMembers = unbanMembers;
206 this.resetGroupLink = resetGroupLink;
207 this.groupLinkState = groupLinkState;
208 this.addMemberPermission = addMemberPermission;
209 this.editDetailsPermission = editDetailsPermission;
210 this.avatarFile = avatarFile;
211 this.expirationTimer = expirationTimer;
212 this.isAnnouncementGroup = isAnnouncementGroup;
213 }
214
215 public Builder withName(final String val) {
216 name = val;
217 return this;
218 }
219
220 public Builder withDescription(final String val) {
221 description = val;
222 return this;
223 }
224
225 public Builder withMembers(final Set<RecipientIdentifier.Single> val) {
226 members = val;
227 return this;
228 }
229
230 public Builder withRemoveMembers(final Set<RecipientIdentifier.Single> val) {
231 removeMembers = val;
232 return this;
233 }
234
235 public Builder withAdmins(final Set<RecipientIdentifier.Single> val) {
236 admins = val;
237 return this;
238 }
239
240 public Builder withRemoveAdmins(final Set<RecipientIdentifier.Single> val) {
241 removeAdmins = val;
242 return this;
243 }
244
245 public Builder withBanMembers(final Set<RecipientIdentifier.Single> val) {
246 banMembers = val;
247 return this;
248 }
249
250 public Builder withUnbanMembers(final Set<RecipientIdentifier.Single> val) {
251 unbanMembers = val;
252 return this;
253 }
254
255 public Builder withResetGroupLink(final boolean val) {
256 resetGroupLink = val;
257 return this;
258 }
259
260 public Builder withGroupLinkState(final GroupLinkState val) {
261 groupLinkState = val;
262 return this;
263 }
264
265 public Builder withAddMemberPermission(final GroupPermission val) {
266 addMemberPermission = val;
267 return this;
268 }
269
270 public Builder withEditDetailsPermission(final GroupPermission val) {
271 editDetailsPermission = val;
272 return this;
273 }
274
275 public Builder withAvatarFile(final String val) {
276 avatarFile = val;
277 return this;
278 }
279
280 public Builder withExpirationTimer(final Integer val) {
281 expirationTimer = val;
282 return this;
283 }
284
285 public Builder withIsAnnouncementGroup(final Boolean val) {
286 isAnnouncementGroup = val;
287 return this;
288 }
289
290 public UpdateGroup build() {
291 return new UpdateGroup(this);
292 }
293 }
294 }