- var newGroupId = signal.updateGroup(groupId, groupName, groupMembers, groupAvatar);
- if (groupId.length != newGroupId.length) {
- writer.println("Created new group: \"{}\"", Base64.getEncoder().encodeToString(newGroupId));
+ boolean isNewGroup = false;
+ SendGroupMessageResults groupMessageResults = null;
+ if (groupId == null) {
+ isNewGroup = true;
+ var results = m.createGroup(groupName, groupMembers, groupAvatar);
+ groupMessageResults = results.second();
+ groupId = results.first();
+ groupName = null;
+ groupMembers = null;
+ groupAvatar = null;
+ }
+
+ var results = m.updateGroup(groupId,
+ UpdateGroup.newBuilder()
+ .withName(groupName)
+ .withDescription(groupDescription)
+ .withMembers(groupMembers)
+ .withRemoveMembers(groupRemoveMembers)
+ .withAdmins(groupAdmins)
+ .withRemoveAdmins(groupRemoveAdmins)
+ .withBanMembers(groupBan)
+ .withUnbanMembers(groupUnban)
+ .withResetGroupLink(groupResetLink)
+ .withGroupLinkState(groupLinkState)
+ .withAddMemberPermission(groupAddMemberPermission)
+ .withEditDetailsPermission(groupEditDetailsPermission)
+ .withAvatarFile(groupAvatar)
+ .withExpirationTimer(groupExpiration)
+ .withIsAnnouncementGroup(groupSendMessagesPermission == null
+ ? null
+ : groupSendMessagesPermission == GroupPermission.ONLY_ADMINS)
+ .build());
+ if (results != null) {
+ if (groupMessageResults == null) {
+ groupMessageResults = results;
+ } else {
+ groupMessageResults = new SendGroupMessageResults(results.timestamp(),
+ Stream.concat(groupMessageResults.results().stream(), results.results().stream()).toList());
+ }