From e31029da89059f1ea21ad6b45aba1f76c94c12aa Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 30 Oct 2018 16:59:00 -0700 Subject: [PATCH] Update recipient's sealed sender status in more places. --- .../thoughtcrime/securesms/jobs/PushDecryptJob.java | 1 + .../securesms/jobs/PushMediaSendJob.java | 13 +++++++++---- .../securesms/jobs/PushTextSendJob.java | 13 +++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index 239fa401d9..7a8ad24798 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -900,6 +900,7 @@ public class PushDecryptJob extends ContextJob { if (recipient.getProfileKey() == null || !MessageDigest.isEqual(recipient.getProfileKey(), message.getProfileKey().get())) { database.setProfileKey(recipient, message.getProfileKey().get()); + database.setUnidentifiedAccessMode(recipient, RecipientDatabase.UnidentifiedAccessMode.UNKNOWN); ApplicationContext.getInstance(context).getJobManager().add(new RetrieveProfileJob(context, recipient)); } } diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 31fb26deb6..d15e166734 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -87,17 +87,22 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { try { Log.i(TAG, "Sending message: " + messageId); + + Recipient recipient = message.getRecipient().resolve(); + byte[] profileKey = recipient.getProfileKey(); + UnidentifiedAccessMode accessMode = recipient.getUnidentifiedAccessMode(); boolean unidentified = deliver(message); + database.markAsSent(messageId, true); markAttachmentsUploaded(messageId, message.getAttachments()); database.markUnidentified(messageId, unidentified); if (TextSecurePreferences.isUnidentifiedDeliveryEnabled(context)) { - Recipient recipient = message.getRecipient().resolve(); - UnidentifiedAccessMode accessMode = recipient.getUnidentifiedAccessMode(); - - if (unidentified && (accessMode == UnidentifiedAccessMode.UNKNOWN || accessMode == UnidentifiedAccessMode.DISABLED)) { + if (unidentified && accessMode == UnidentifiedAccessMode.UNKNOWN && profileKey == null) { + Log.i(TAG, "Marking recipient as UD-unrestricted following a UD send."); + DatabaseFactory.getRecipientDatabase(context).setUnidentifiedAccessMode(recipient, UnidentifiedAccessMode.UNRESTRICTED); + } else if (unidentified && accessMode == UnidentifiedAccessMode.UNKNOWN) { Log.i(TAG, "Marking recipient as UD-enabled following a UD send."); DatabaseFactory.getRecipientDatabase(context).setUnidentifiedAccessMode(recipient, UnidentifiedAccessMode.ENABLED); } else if (!unidentified && accessMode != UnidentifiedAccessMode.DISABLED) { diff --git a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index df84f11579..cbe3d5d06f 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -81,15 +81,20 @@ public class PushTextSendJob extends PushSendJob implements InjectableType { try { Log.i(TAG, "Sending message: " + messageId); + Recipient recipient = record.getRecipient().resolve(); + byte[] profileKey = recipient.getProfileKey(); + UnidentifiedAccessMode accessMode = recipient.getUnidentifiedAccessMode(); + boolean unidentified = deliver(record); + database.markAsSent(messageId, true); database.markUnidentified(messageId, unidentified); if (TextSecurePreferences.isUnidentifiedDeliveryEnabled(context)) { - Recipient recipient = record.getRecipient().resolve(); - UnidentifiedAccessMode accessMode = recipient.getUnidentifiedAccessMode(); - - if (unidentified && (accessMode == UnidentifiedAccessMode.UNKNOWN || accessMode == UnidentifiedAccessMode.DISABLED)) { + if (unidentified && accessMode == UnidentifiedAccessMode.UNKNOWN && profileKey == null) { + Log.i(TAG, "Marking recipient as UD-unrestricted following a UD send."); + DatabaseFactory.getRecipientDatabase(context).setUnidentifiedAccessMode(recipient, UnidentifiedAccessMode.UNRESTRICTED); + } else if (unidentified && accessMode == UnidentifiedAccessMode.UNKNOWN) { Log.i(TAG, "Marking recipient as UD-enabled following a UD send."); DatabaseFactory.getRecipientDatabase(context).setUnidentifiedAccessMode(recipient, UnidentifiedAccessMode.ENABLED); } else if (!unidentified && accessMode != UnidentifiedAccessMode.DISABLED) {