+ if (avatarFile != null) {
+ createPrivateDirectories(avatarsPath);
+ File aFile = getGroupAvatarFile(g.groupId);
+ Files.copy(Paths.get(avatarFile), aFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ }
+
+ groupStore.updateGroup(g);
+
+ SignalServiceDataMessage.Builder messageBuilder = getGroupUpdateMessageBuilder(g);
+
+ // Don't send group message to ourself
+ final List<String> membersSend = new ArrayList<>(g.members);
+ membersSend.remove(this.username);
+ sendMessage(messageBuilder, membersSend);
+ return g.groupId;
+ }
+
+ private void sendUpdateGroupMessage(byte[] groupId, String recipient) throws IOException, EncapsulatedExceptions {
+ if (groupId == null) {
+ return;
+ }
+ GroupInfo g = getGroupForSending(groupId);
+
+ if (!g.members.contains(recipient)) {
+ return;
+ }
+
+ SignalServiceDataMessage.Builder messageBuilder = getGroupUpdateMessageBuilder(g);
+
+ // Send group message only to the recipient who requested it
+ final List<String> membersSend = new ArrayList<>();
+ membersSend.add(recipient);
+ sendMessage(messageBuilder, membersSend);
+ }
+
+ private SignalServiceDataMessage.Builder getGroupUpdateMessageBuilder(GroupInfo g) {