diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index dd77dab414..2cb68af0e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -232,6 +232,9 @@ public class PushGroupSendJob extends PushSendJob { } else if (!identityMismatches.isEmpty()) { database.markAsSentFailed(messageId); notifyMediaMessageDeliveryFailed(context, messageId); + + List mismatchRecipientIds = Stream.of(identityMismatches).map(mismatch -> mismatch.getRecipientId(context)).toList(); + RetrieveProfileJob.enqueue(mismatchRecipientIds); } } catch (UntrustedIdentityException | UndeliverableMessageException e) { warn(TAG, e); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index c9b7798cce..100cec4e56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.service.ExpiringMessageManager; import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException; @@ -165,8 +166,10 @@ public class PushMediaSendJob extends PushSendJob { ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } catch (UntrustedIdentityException uie) { warn(TAG, "Failure", uie); - database.addMismatchedIdentity(messageId, Recipient.external(context, uie.getIdentifier()).getId(), uie.getIdentityKey()); + RecipientId recipientId = Recipient.external(context, uie.getIdentifier()).getId(); + database.addMismatchedIdentity(messageId, recipientId, uie.getIdentityKey()); database.markAsSentFailed(messageId); + RetrieveProfileJob.enqueue(recipientId); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index 3911d11095..778738dbf7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -14,7 +14,9 @@ import org.thoughtcrime.securesms.database.model.SmsMessageRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.service.ExpiringMessageManager; import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException; @@ -122,9 +124,11 @@ public class PushTextSendJob extends PushSendJob { ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } catch (UntrustedIdentityException e) { warn(TAG, "Failure", e); - database.addMismatchedIdentity(record.getId(), Recipient.external(context, e.getIdentifier()).getId(), e.getIdentityKey()); + RecipientId recipientId = Recipient.external(context, e.getIdentifier()).getId(); + database.addMismatchedIdentity(record.getId(), recipientId, e.getIdentityKey()); database.markAsSentFailed(record.getId()); database.markAsPush(record.getId()); + RetrieveProfileJob.enqueue(recipientId); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java index 30c6e50314..49fc0bc1c8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java @@ -84,6 +84,17 @@ public class RetrieveProfileJob extends BaseJob { }); } + /** + * Submits the necessary job to refresh the profile of the requested recipient. Works for any + * RecipientId, including individuals, groups, or yourself. + * + * Identical to {@link #enqueue(Collection)})} + */ + @WorkerThread + public static void enqueue(@NonNull RecipientId recipientId) { + ApplicationDependencies.getJobManager().add(forRecipient(recipientId)); + } + /** * Submits the necessary jobs to refresh the profiles of the requested recipients. Works for any * RecipientIds, including individuals, groups, or yourself.