import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
+import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
private final SignalAccount account;
private final SignalDependencies dependencies;
+ private final AttachmentHelper attachmentHelper;
private final SendHelper sendHelper;
private final GroupV2Helper groupV2Helper;
private final AvatarStore avatarStore;
public GroupHelper(
final SignalAccount account,
final SignalDependencies dependencies,
+ final AttachmentHelper attachmentHelper,
final SendHelper sendHelper,
final GroupV2Helper groupV2Helper,
final AvatarStore avatarStore,
) {
this.account = account;
this.dependencies = dependencies;
+ this.attachmentHelper = attachmentHelper;
this.sendHelper = sendHelper;
this.groupV2Helper = groupV2Helper;
this.avatarStore = avatarStore;
return getGroup(groupId, false);
}
+ public void downloadGroupAvatar(GroupIdV1 groupId, SignalServiceAttachment avatar) {
+ try {
+ avatarStore.storeGroupAvatar(groupId,
+ outputStream -> attachmentHelper.retrieveAttachment(avatar, outputStream));
+ } catch (IOException e) {
+ logger.warn("Failed to download avatar for group {}, ignoring: {}", groupId.toBase64(), e.getMessage());
+ }
+ }
+
public Optional<SignalServiceAttachmentStream> createGroupAvatarAttachment(GroupIdV1 groupId) throws IOException {
final var streamDetails = avatarStore.retrieveGroupAvatar(groupId);
if (streamDetails == null) {
}
}
+ public void deleteGroup(GroupId groupId) throws IOException {
+ account.getGroupStore().deleteGroup(groupId);
+ avatarStore.deleteGroupAvatar(groupId);
+ }
+
public SendGroupMessageResults sendGroupInfoRequest(
GroupIdV1 groupId, RecipientId recipientId
) throws IOException {