From 54f92ae466c52c9486a96157e04219553e4f7183 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 25 May 2021 12:21:13 -0400 Subject: [PATCH] Do not send if unregistered. --- .../securesms/database/ThreadDatabase.java | 1 + .../securesms/jobs/AttachmentUploadJob.java | 8 +++++++- .../securesms/jobs/GroupCallUpdateSendJob.java | 5 +++++ .../jobs/MultiDeviceBlockedUpdateJob.java | 5 +++++ .../jobs/MultiDeviceConfigurationUpdateJob.java | 6 ++++++ .../jobs/MultiDeviceContactUpdateJob.java | 5 +++++ .../securesms/jobs/MultiDeviceGroupUpdateJob.java | 5 +++++ .../securesms/jobs/MultiDeviceKeysUpdateJob.java | 6 ++++++ .../MultiDeviceMessageRequestResponseJob.java | 5 +++++ .../jobs/MultiDeviceOutgoingPaymentSyncJob.java | 5 +++++ .../jobs/MultiDeviceProfileContentUpdateJob.java | 6 ++++++ .../jobs/MultiDeviceProfileKeyUpdateJob.java | 5 +++++ .../securesms/jobs/MultiDeviceReadUpdateJob.java | 5 +++++ .../jobs/MultiDeviceStickerPackSyncJob.java | 6 ++++++ .../jobs/MultiDeviceStorageSyncRequestJob.java | 6 ++++++ .../jobs/MultiDeviceVerifiedUpdateJob.java | 5 +++++ .../jobs/MultiDeviceViewOnceOpenJob.java | 5 +++++ .../jobs/MultiDeviceViewedUpdateJob.java | 5 +++++ .../jobs/PaymentNotificationSendJob.java | 5 +++++ .../securesms/jobs/PaymentSendJob.java | 5 +++++ .../securesms/jobs/ProfileKeySendJob.java | 5 +++++ .../jobs/PushGroupSilentUpdateSendJob.java | 5 +++++ .../securesms/jobs/PushGroupUpdateJob.java | 5 +++++ .../thoughtcrime/securesms/jobs/PushSendJob.java | 6 ++++++ .../securesms/jobs/ReactionSendJob.java | 5 +++++ .../securesms/jobs/RemoteDeleteSendJob.java | 7 ++++++- .../securesms/jobs/RequestGroupInfoJob.java | 5 +++++ .../securesms/jobs/SendDeliveryReceiptJob.java | 5 +++++ .../securesms/jobs/SendReadReceiptJob.java | 5 +++++ .../securesms/jobs/SendViewedReceiptJob.java | 5 +++++ .../securesms/jobs/TypingSendJob.java | 5 +++++ .../securesms/net/NotPushRegisteredException.java | 9 +++++++++ .../securesms/recipients/LiveRecipient.java | 4 ++-- .../securesms/recipients/RecipientDetails.java | 15 +++++++++++++-- .../securesms/util/TextSecurePreferences.java | 12 ++++++++++++ 35 files changed, 196 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/net/NotPushRegisteredException.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index 3bb0ac8ce2..aff252b10a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -1502,6 +1502,7 @@ public class ThreadDatabase extends Database { group.hasAvatar() ? Optional.of(group.getAvatarId()) : Optional.absent(), false, false, + recipientSettings.getRegistered(), recipientSettings, null); recipient = new Recipient(recipientId, details, false); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java index d013665a17..1f7c798a9c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.java @@ -23,6 +23,8 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.mms.PartAuthority; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.service.GenericForegroundService; import org.thoughtcrime.securesms.service.NotificationController; import org.thoughtcrime.securesms.util.MediaUtil; @@ -95,6 +97,10 @@ public final class AttachmentUploadJob extends BaseJob { @Override public void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + Data inputData = getInputData(); ResumableUploadSpec resumableUploadSpec; @@ -153,7 +159,7 @@ public final class AttachmentUploadJob extends BaseJob { protected boolean onShouldRetry(@NonNull Exception exception) { if (exception instanceof ResumeLocationInvalidException) return false; - return exception instanceof IOException; + return exception instanceof IOException && !(exception instanceof NotPushRegisteredException); } private @NonNull SignalServiceAttachment getAttachmentFor(Attachment attachment, @Nullable NotificationController notification, @Nullable ResumableUploadSpec resumableUploadSpec) throws InvalidAttachmentException { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java index ade00459e7..5106f3c091 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -104,6 +105,10 @@ public class GroupCallUpdateSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + Recipient conversationRecipient = Recipient.resolved(recipientId); if (!conversationRecipient.isPushV2Group()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java index 55ccbed421..af310d8440 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -61,6 +62,10 @@ public class MultiDeviceBlockedUpdateJob extends BaseJob { public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java index cb203891a7..b9f3cd0f11 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java @@ -9,6 +9,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.SignalServiceMessageSender; @@ -83,6 +85,10 @@ public class MultiDeviceConfigurationUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java index 29a0384fda..9bea625484 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java @@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.keyvalue.SignalStore; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.providers.BlobProvider; @@ -114,6 +115,10 @@ public class MultiDeviceContactUpdateJob extends BaseJob { public void onRun() throws IOException, UntrustedIdentityException, NetworkException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java index 2a66c0c23e..37ff1aa500 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.providers.BlobProvider; import org.thoughtcrime.securesms.recipients.Recipient; @@ -72,6 +73,10 @@ public class MultiDeviceGroupUpdateJob extends BaseJob { @Override public void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.java index 07bb946255..48846640d0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.java @@ -10,6 +10,8 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.keyvalue.SignalStore; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.SignalServiceMessageSender; @@ -54,6 +56,10 @@ public class MultiDeviceKeysUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java index 6b14c1f74d..10fa3c3032 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -88,6 +89,10 @@ public class MultiDeviceMessageRequestResponseJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java index 1fbf6d7ca8..5e6230102f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.payments.proto.PaymentMetaData; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -67,6 +68,10 @@ public final class MultiDeviceOutgoingPaymentSyncJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java index a20db90587..1c6bb17672 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java @@ -8,6 +8,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; @@ -45,6 +47,10 @@ public class MultiDeviceProfileContentUpdateJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java index cea4333930..ab0ab3e1f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -62,6 +63,10 @@ public class MultiDeviceProfileKeyUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java index 6318f75e20..a0ccccf5d9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -100,6 +101,10 @@ public class MultiDeviceReadUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java index aabdee84e8..fba75e4b25 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java @@ -11,6 +11,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.Hex; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceMessageSender; @@ -56,6 +58,10 @@ public class MultiDeviceStickerPackSyncJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java index 8d36f2af79..5fccb32c81 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java @@ -8,6 +8,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; @@ -45,6 +47,10 @@ public class MultiDeviceStorageSyncRequestJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java index 4edb9ba2ef..0b6266a2b9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java @@ -10,6 +10,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -87,6 +88,10 @@ public class MultiDeviceVerifiedUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + try { if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device..."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java index 389d4a7c73..13794158e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -71,6 +72,10 @@ public class MultiDeviceViewOnceOpenJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java index e1a5021216..d232cc98b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -100,6 +101,10 @@ public class MultiDeviceViewedUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device..."); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJob.java index 034f52f477..5b7f2f3204 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJob.java @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.database.PaymentDatabase; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -75,6 +76,10 @@ public final class PaymentNotificationSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + PaymentDatabase paymentDatabase = DatabaseFactory.getPaymentDatabase(context); Recipient recipient = Recipient.resolved(recipientId); SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java index cb92fcf700..296fa77aa3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.keyvalue.SignalStore; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.payments.FailureReason; import org.thoughtcrime.securesms.payments.MobileCoinPublicAddress; import org.thoughtcrime.securesms.payments.PaymentSubmissionResult; @@ -123,6 +124,10 @@ public final class PaymentSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { Log.w(TAG, "Payments are not enabled"); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java index 44e0c1e5d8..728264c926 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.DecryptionsDrainedConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -93,6 +94,10 @@ public class ProfileKeySendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + Recipient conversationRecipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId); if (conversationRecipient == null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java index 928785cb17..a9db213362 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.mms.MessageGroupContext; import org.thoughtcrime.securesms.mms.OutgoingGroupUpdateMessage; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -128,6 +129,10 @@ public final class PushGroupSilentUpdateSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + List destinations = Stream.of(recipients).map(Recipient::resolved).toList(); List completions = deliver(destinations); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java index fd4cbd19a1..3f05dfe0a8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; @@ -76,6 +77,10 @@ public class PushGroupUpdateJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); Optional record = groupDatabase.getGroup(groupId); SignalServiceAttachment avatar = null; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index ec554fd625..6dc37cda61 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -39,6 +39,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; import org.thoughtcrime.securesms.mms.PartAuthority; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -68,6 +69,7 @@ import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulRespons import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException; import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException; import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedException; +import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException; import org.whispersystems.signalservice.internal.push.ProofRequiredResponse; import java.io.ByteArrayInputStream; @@ -109,6 +111,10 @@ public abstract class PushSendJob extends SendJob { throw new TextSecureExpiredException("Too many signed prekey rotation failures"); } + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + onPushSend(); if (SignalStore.rateLimit().needsRecaptcha()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java index bec6170ca1..558b0d5361 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java @@ -17,6 +17,7 @@ import org.thoughtcrime.securesms.database.model.ReactionRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -133,6 +134,10 @@ public class ReactionSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + MessageDatabase db; MessageRecord message; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java index 234cc84da5..f06d23e2a8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -112,8 +113,12 @@ public class RemoteDeleteSendJob extends BaseJob { @Override protected void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + MessageDatabase db; - MessageRecord message; + MessageRecord message; if (isMms) { db = DatabaseFactory.getMmsDatabase(context); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java index 588af88f90..080e433739 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -68,6 +69,10 @@ public class RequestGroupInfoJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + SignalServiceGroup group = SignalServiceGroup.newBuilder(Type.REQUEST_INFO) .withId(groupId.getDecodedId()) .build(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendDeliveryReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendDeliveryReceiptJob.java index e59738350f..1a4c0e3445 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendDeliveryReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendDeliveryReceiptJob.java @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -77,6 +78,10 @@ public class SendDeliveryReceiptJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException, UndeliverableMessageException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender(); Recipient recipient = Recipient.resolved(recipientId); SignalServiceAddress remoteAddress = RecipientUtil.toSignalServiceAddress(context, recipient); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java index ec06cba140..137207aa02 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -114,6 +115,10 @@ public class SendReadReceiptJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException, UndeliverableMessageException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isReadReceiptsEnabled(context) || messageIds.isEmpty()) return; if (!RecipientUtil.isMessageRequestAccepted(context, threadId)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java index 4a6d92b983..328fab0704 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -91,6 +92,10 @@ public class SendViewedReceiptJob extends BaseJob { @Override public void onRun() throws IOException, UntrustedIdentityException { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isReadReceiptsEnabled(context) || syncTimestamps.isEmpty() || !FeatureFlags.sendViewedReceipts()) return; if (!RecipientUtil.isMessageRequestAccepted(context, threadId)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java index 25c0e29e3d..cc69ba8908 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -77,6 +78,10 @@ public class TypingSendJob extends BaseJob { @Override public void onRun() throws Exception { + if (!Recipient.self().isRegistered()) { + throw new NotPushRegisteredException(); + } + if (!TextSecurePreferences.isTypingIndicatorsEnabled(context)) { return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/NotPushRegisteredException.java b/app/src/main/java/org/thoughtcrime/securesms/net/NotPushRegisteredException.java new file mode 100644 index 0000000000..66a45babab --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/net/NotPushRegisteredException.java @@ -0,0 +1,9 @@ +package org.thoughtcrime.securesms.net; + +import java.io.IOException; + +/** + * An exception that can be thrown when the local user is no longer registered. + */ +public final class NotPushRegisteredException extends IOException { +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java index c84969a3c3..1ae1da8851 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java @@ -212,10 +212,10 @@ public final class LiveRecipient { avatarId = Optional.of(groupRecord.get().getAvatarId()); } - return new RecipientDetails(title, null, avatarId, false, false, settings, members); + return new RecipientDetails(title, null, avatarId, false, false, settings.getRegistered(), settings, members); } - return new RecipientDetails(null, null, Optional.absent(), false, false, settings, null); + return new RecipientDetails(null, null, Optional.absent(), false, false, settings.getRegistered(), settings, null); } synchronized void set(@NonNull Recipient recipient) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientDetails.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientDetails.java index 9702358ebc..3301e87205 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientDetails.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientDetails.java @@ -78,6 +78,7 @@ public class RecipientDetails { @NonNull Optional groupAvatarId, boolean systemContact, boolean isSelf, + @NonNull RegisteredState registeredState, @NonNull RecipientSettings settings, @Nullable List participants) { @@ -101,7 +102,7 @@ public class RecipientDetails { this.participants = participants == null ? new LinkedList<>() : participants; this.profileName = settings.getProfileName(); this.defaultSubscriptionId = settings.getDefaultSubscriptionId(); - this.registered = settings.getRegistered(); + this.registered = registeredState; this.profileKey = settings.getProfileKey(); this.profileKeyCredential = settings.getProfileKeyCredential(); this.profileAvatar = settings.getProfileAvatar(); @@ -184,6 +185,16 @@ public class RecipientDetails { boolean isSelf = (settings.getE164() != null && settings.getE164().equals(TextSecurePreferences.getLocalNumber(context))) || (settings.getUuid() != null && settings.getUuid().equals(TextSecurePreferences.getLocalUuid(context))); - return new RecipientDetails(null, settings.getSystemDisplayName(), Optional.absent(), systemContact, isSelf, settings, null); + RegisteredState registeredState = settings.getRegistered(); + + if (isSelf) { + if (TextSecurePreferences.isPushRegistered(context) && !TextSecurePreferences.isUnauthorizedRecieved(context)) { + registeredState = RegisteredState.REGISTERED; + } else { + registeredState = RegisteredState.NOT_REGISTERED; + } + } + + return new RecipientDetails(null, settings.getSystemDisplayName(), Optional.absent(), systemContact, isSelf, registeredState, settings, null); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 43d76cf4bc..9d9b79638d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.lock.RegistrationLockReminders; import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference; +import org.thoughtcrime.securesms.recipients.Recipient; import org.whispersystems.libsignal.util.Medium; import org.whispersystems.signalservice.api.util.UuidUtil; @@ -464,7 +465,12 @@ public class TextSecurePreferences { } public static void setUnauthorizedReceived(Context context, boolean value) { + boolean previous = isUnauthorizedRecieved(context); setBooleanPreference(context, UNAUTHORIZED_RECEIVED, value); + + if (previous != value) { + Recipient.self().live().refresh(); + } } public static boolean isUnauthorizedRecieved(Context context) { @@ -912,8 +918,14 @@ public class TextSecurePreferences { public static void setPushRegistered(Context context, boolean registered) { Log.i(TAG, "Setting push registered: " + registered); + boolean previous = isPushRegistered(context); + setBooleanPreference(context, REGISTERED_GCM_PREF, registered); ApplicationDependencies.getIncomingMessageObserver().notifyRegistrationChanged(); + + if (previous != registered) { + Recipient.self().live().refresh(); + } } public static boolean isShowInviteReminders(Context context) {