From 5595b79bf5c08f6963f05c5aef7e7ed38f585bba Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 14 Feb 2025 12:17:19 -0500 Subject: [PATCH] Improve unknown recipient handling in group sends. Fixes #13980 --- .../org/thoughtcrime/securesms/messages/GroupSendUtil.java | 2 +- .../java/org/thoughtcrime/securesms/recipients/Recipient.kt | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java index 2f20c67320..9b84b2e1f3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java @@ -257,7 +257,7 @@ public final class GroupSendUtil { { Log.i(TAG, "Starting group send. GroupId: " + (groupId != null ? groupId.toString() : "none") + ", DistributionId: " + (distributionId != null ? distributionId.toString() : "none") + " RelatedMessageId: " + (relatedMessageId != null ? relatedMessageId.toString() : "none") + ", Targets: " + allTargets.size() + ", RecipientUpdate: " + isRecipientUpdate + ", Operation: " + sendOperation.getClass().getSimpleName()); - Set unregisteredTargets = allTargets.stream().filter(Recipient::isUnregistered).collect(Collectors.toSet()); + Set unregisteredTargets = allTargets.stream().filter(it -> it.isUnregistered() || it.isUnknown()).collect(Collectors.toSet()); List registeredTargets = allTargets.stream().filter(r -> !unregisteredTargets.contains(r)).collect(Collectors.toList()); RecipientData recipients = new RecipientData(context, registeredTargets, isStorySend); diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt index 2476d44538..8d7443f3a1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt @@ -85,7 +85,7 @@ class Recipient( private val callRingtoneUri: Uri? = null, val expiresInSeconds: Int = 0, val expireTimerVersion: Int = 1, - private val registeredValue: RegisteredState = RegisteredState.UNKNOWN, + private val registeredValue: RegisteredState = RegisteredState.NOT_REGISTERED, val profileKey: ByteArray? = null, val expiringProfileKeyCredential: ExpiringProfileKeyCredential? = null, private val groupName: String? = null, @@ -182,6 +182,9 @@ class Recipient( /** Whether the recipient has been hidden from the contact list. */ val isHidden: Boolean = hiddenState != HiddenState.NOT_HIDDEN + /** Whether or not this is an unknown recipient. */ + val isUnknown: Boolean = id.isUnknown + /** Whether the recipient represents an individual person (as opposed to a group or list). */ val isIndividual: Boolean get() = !isGroup && !isCallLink && !isDistributionList && !isReleaseNotes