From 49a814abeff43830ceaea8eac2a623041a5c8262 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 17 Mar 2023 09:54:20 -0400 Subject: [PATCH] Show blocked users as 'skipped' when sending to curated story list. --- .../securesms/jobs/PushDistributionListSendJob.java | 7 +++++-- .../org/thoughtcrime/securesms/stories/Stories.kt | 11 +++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java index 368cac3b5e..f589157ea2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java @@ -164,6 +164,7 @@ public final class PushDistributionListSendJob extends PushSendJob { log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getRecipient().getId() + ", Attachments: " + buildAttachmentString(message.getAttachments())); List targets; + List skipped = Collections.emptyList(); if (Util.hasItems(filterRecipientIds)) { targets = new ArrayList<>(filterRecipientIds.size() + existingNetworkFailures.size()); @@ -172,13 +173,15 @@ public final class PushDistributionListSendJob extends PushSendJob { } else if (!existingNetworkFailures.isEmpty()) { targets = Stream.of(existingNetworkFailures).map(nf -> nf.getRecipientId(context)).distinct().map(Recipient::resolved).toList(); } else { - targets = Stream.of(Stories.getRecipientsToSendTo(messageId, message.getSentTimeMillis(), message.getStoryType().isStoryWithReplies())).distinctBy(Recipient::getId).toList(); + Stories.SendData data = Stories.getRecipientsToSendTo(messageId, message.getSentTimeMillis(), message.getStoryType().isStoryWithReplies()); + targets = data.getTargets(); + skipped = data.getSkipped(); } List results = deliver(message, targets); Log.i(TAG, JobLogger.format(this, "Finished send.")); - PushGroupSendJob.processGroupMessageResults(context, messageId, -1, null, message, results, targets, Collections.emptyList(), existingNetworkFailures, existingIdentityMismatches); + PushGroupSendJob.processGroupMessageResults(context, messageId, -1, null, message, results, targets, skipped, existingNetworkFailures, existingIdentityMismatches); } catch (UntrustedIdentityException | UndeliverableMessageException e) { warn(TAG, String.valueOf(message.getSentTimeMillis()), e); diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt index 9c6bead36e..864652d401 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt @@ -89,10 +89,12 @@ object Stories { } @JvmStatic - fun getRecipientsToSendTo(messageId: Long, sentTimestamp: Long, allowsReplies: Boolean): List { + fun getRecipientsToSendTo(messageId: Long, sentTimestamp: Long, allowsReplies: Boolean): SendData { val recipientIds: List = SignalDatabase.storySends.getRecipientsToSendTo(messageId, sentTimestamp, allowsReplies) + val targets: List = RecipientUtil.getEligibleForSending(recipientIds.map(Recipient::resolved)).distinctBy { it.id } + val skipped: List = (recipientIds.toSet() - targets.map { it.id }.toSet()).toList() - return RecipientUtil.getEligibleForSending(recipientIds.map(Recipient::resolved)) + return SendData(targets, skipped) } @WorkerThread @@ -398,4 +400,9 @@ object Stories { ) } } + + data class SendData( + val targets: List, + val skipped: List + ) }