From a471ffa6d833f566a2c3b8c02c1656a9850701bb Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 9 Apr 2020 17:45:48 -0400 Subject: [PATCH] Fix UD indicators for sent transcripts. --- .../securesms/jobs/PushProcessMessageJob.java | 17 +++++++++++++++-- .../securesms/recipients/Recipient.java | 11 +++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) 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;