diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java index bfe847bd5b..080bd81ab7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushProcessMessageJob.java @@ -966,7 +966,7 @@ public final class PushProcessMessageJob extends BaseJob { if (recipients.isGroup()) { updateGroupReceiptStatus(message, messageId, recipients.requireGroupId()); } else { - database.markUnidentified(messageId, message.isUnidentified(recipients.requireServiceId())); + database.markUnidentified(messageId, isUnidentified(message, recipients)); } database.markAsSent(messageId, true); @@ -1120,7 +1120,7 @@ public final class PushProcessMessageJob extends BaseJob { messageId = DatabaseFactory.getSmsDatabase(context).insertMessageOutbox(threadId, outgoingTextMessage, false, message.getTimestamp(), null); database = DatabaseFactory.getSmsDatabase(context); - database.markUnidentified(messageId, message.isUnidentified(recipient.requireServiceId())); + database.markUnidentified(messageId, isUnidentified(message, recipient)); } database.markAsSent(messageId, true); @@ -1595,6 +1595,19 @@ public final class PushProcessMessageJob extends BaseJob { } } + private static boolean isUnidentified(@NonNull SentTranscriptMessage message, @NonNull Recipient recipient) { + boolean unidentified = false; + + if (recipient.hasE164()) { + unidentified |= message.isUnidentified(recipient.requireE164()); + } + if (recipient.hasUuid()) { + unidentified |= message.isUnidentified(recipient.requireUuid()); + } + + return unidentified; + } + @SuppressWarnings("WeakerAccess") private static class StorageFailedException extends Exception { private final String sender; diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java index df3a4f2914..7add9f26fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java @@ -447,6 +447,17 @@ public class Recipient { return Optional.fromNullable(e164).or(Optional.fromNullable(email)); } + public @NonNull UUID requireUuid() { + UUID resolved = resolving ? resolve().uuid : uuid; + + if (resolved == null) { + throw new MissingAddressError(); + } + + return resolved; + } + + public @NonNull String requireE164() { String resolved = resolving ? resolve().e164 : e164;