diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 64bf9cbc39..ab8f4fd657 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -136,7 +136,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi RefreshPreKeysJob.scheduleIfNecessary(); StorageSyncHelper.scheduleRoutineSync(); RetrieveProfileJob.enqueueRoutineFetchIfNeccessary(this); - RegistrationUtil.markRegistrationPossiblyComplete(); + RegistrationUtil.markRegistrationPossiblyComplete(this); ProcessLifecycleOwner.get().getLifecycle().addObserver(this); if (Build.VERSION.SDK_INT < 21) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java index ea1b3f1c77..b7e71cd3dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java @@ -87,7 +87,7 @@ public class StorageSyncJob extends BaseJob { @Override protected void onRun() throws IOException, RetryLaterException { - if (!SignalStore.kbsValues().hasPin()) { + if (!SignalStore.kbsValues().hasPin() && !SignalStore.kbsValues().hasOptedOut()) { Log.i(TAG, "Doesn't have a PIN. Skipping."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/BaseKbsPinFragment.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/BaseKbsPinFragment.java index 7ca72de028..1d3d5f4f70 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/BaseKbsPinFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/BaseKbsPinFragment.java @@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.pin.PinOptOutDialog; import org.thoughtcrime.securesms.pin.PinState; +import org.thoughtcrime.securesms.registration.RegistrationUtil; import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.text.AfterTextChanged; import org.thoughtcrime.securesms.util.views.LearnMoreTextView; @@ -215,6 +216,9 @@ abstract class BaseKbsPinFragment extends } private void onPinSkipped() { - PinOptOutDialog.show(requireContext(), this::closeNavGraphBranch); + PinOptOutDialog.show(requireContext(), () -> { + RegistrationUtil.markRegistrationPossiblyComplete(requireContext()); + closeNavGraphBranch(); + }); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java index d7f44a9861..4d59dbf4ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java @@ -117,7 +117,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment { if (uploadResult == EditProfileRepository.UploadResult.SUCCESS) { - RegistrationUtil.markRegistrationPossiblyComplete(); + RegistrationUtil.markRegistrationPossiblyComplete(requireContext()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) handleFinishedLollipop(); else handleFinishedLegacy(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java index 7d0c8dc039..71cd6daa3f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java @@ -1,5 +1,9 @@ package org.thoughtcrime.securesms.registration; +import android.content.Context; + +import androidx.annotation.NonNull; + import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.jobs.StorageSyncJob; @@ -7,6 +11,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.storage.StorageSyncHelper; +import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.internal.storage.protos.SignalStorage; public final class RegistrationUtil { @@ -20,8 +25,12 @@ public final class RegistrationUtil { * path a user has taken. This will only truly mark registration as complete if all of the * requirements are met. */ - public static void markRegistrationPossiblyComplete() { - if (!SignalStore.registrationValues().isRegistrationComplete() && SignalStore.kbsValues().hasPin() && !Recipient.self().getProfileName().isEmpty()) { + public static void markRegistrationPossiblyComplete(@NonNull Context context) { + if (!SignalStore.registrationValues().isRegistrationComplete() && + TextSecurePreferences.isPushRegistered(context) && + !Recipient.self().getProfileName().isEmpty() && + (SignalStore.kbsValues().hasPin() || SignalStore.kbsValues().hasOptedOut())) + { Log.i(TAG, "Marking registration completed.", new Throwable()); SignalStore.registrationValues().setRegistrationComplete(); ApplicationDependencies.getJobManager().startChain(new StorageSyncJob())