diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java index 72f16a95..3b812c5e 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java @@ -841,13 +841,6 @@ public class ManagerImpl implements Manager { throw new AttachmentInvalidException(attachment, new IOException("Stories only support image and video attachments")); } - final var uploadedAttachment = context.getAttachmentHelper().uploadAttachment(attachment); - final var storyMessage = SignalServiceStoryMessage.forFileAttachment(account.getProfileKey().serialize(), - null, - uploadedAttachment, - allowsReplies, - List.of()); - final var timestamp = getNextMessageTimestamp(); final var recipients = account.getRecipientStore() .getRecipients(true, Optional.of(false), Set.of(), Optional.empty()); @@ -857,6 +850,18 @@ public class ManagerImpl implements Manager { .map(r -> r.getRecipientId()) .collect(Collectors.toSet()); + if (recipientIds.isEmpty()) { + throw new IOException("No eligible contacts found for story delivery"); + } + + final var uploadedAttachment = context.getAttachmentHelper().uploadAttachment(attachment); + final var storyMessage = SignalServiceStoryMessage.forFileAttachment(account.getProfileKey().serialize(), + null, + uploadedAttachment, + allowsReplies, + List.of()); + final var timestamp = getNextMessageTimestamp(); + final var sendResults = context.getSendHelper() .sendStoryMessage(storyMessage, timestamp, recipientIds, allowsReplies);