From 5ea132e7127c730f249fdb7a77d8f6fdbaf10a04 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sun, 19 Jul 2020 10:22:05 -0400 Subject: [PATCH] Delay directory refresh until registration is complete. --- .../thoughtcrime/securesms/ApplicationContext.java | 2 +- .../securesms/contacts/sync/DirectoryHelper.java | 13 +++++++++---- .../securesms/lock/v2/BaseKbsPinFragment.java | 3 +-- .../securesms/lock/v2/ConfirmKbsPinFragment.java | 7 ++----- .../securesms/pin/PinRestoreEntryFragment.java | 12 +----------- .../securesms/pin/PinRestoreRepository.java | 5 +++++ .../profiles/edit/EditProfileFragment.java | 4 +--- .../securesms/registration/RegistrationUtil.java | 2 +- 8 files changed, 21 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index ab8f4fd657..2a39899a5c 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(this); + RegistrationUtil.maybeMarkRegistrationComplete(this); ProcessLifecycleOwner.get().getLifecycle().addObserver(this); if (Build.VERSION.SDK_INT < 21) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java index 703bca01ed..5e35c8b825 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java @@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.registration.RegistrationUtil; import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.sms.IncomingJoinedMessage; @@ -55,11 +56,9 @@ import java.io.IOException; import java.util.Calendar; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutionException; @@ -76,12 +75,18 @@ public class DirectoryHelper { @WorkerThread public static void refreshDirectory(@NonNull Context context, boolean notifyOfNewUsers) throws IOException { if (TextUtils.isEmpty(TextSecurePreferences.getLocalNumber(context))) { - Log.i(TAG, "Have not yet set our own local number. Skipping."); + Log.w(TAG, "Have not yet set our own local number. Skipping."); return; } if (!Permissions.hasAll(context, Manifest.permission.WRITE_CONTACTS)) { - Log.i(TAG, "No contact permissions. Skipping."); + Log.w(TAG, "No contact permissions. Skipping."); + return; + } + + if (!SignalStore.registrationValues().isRegistrationComplete()) { + Log.w(TAG, "Registration is not yet complete. Skipping, but running a routine to possibly mark it complete."); + RegistrationUtil.maybeMarkRegistrationComplete(context); 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 1d3d5f4f70..b9f0f0e9f2 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 @@ -26,7 +26,6 @@ import org.thoughtcrime.securesms.LoggingFragment; 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; @@ -217,7 +216,7 @@ abstract class BaseKbsPinFragment extends private void onPinSkipped() { PinOptOutDialog.show(requireContext(), () -> { - RegistrationUtil.markRegistrationPossiblyComplete(requireContext()); + RegistrationUtil.maybeMarkRegistrationComplete(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 4d59dbf4ab..f54b210da7 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 @@ -2,9 +2,7 @@ package org.thoughtcrime.securesms.lock.v2; import android.animation.Animator; import android.app.Activity; -import android.content.Intent; import android.view.View; -import android.view.autofill.AutofillManager; import androidx.annotation.NonNull; import androidx.annotation.RawRes; @@ -21,7 +19,6 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.animation.AnimationCompleteListener; import org.thoughtcrime.securesms.animation.AnimationRepeatListener; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; -import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.megaphone.Megaphones; import org.thoughtcrime.securesms.registration.RegistrationUtil; import org.thoughtcrime.securesms.storage.StorageSyncHelper; @@ -117,7 +114,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment { if (uploadResult == EditProfileRepository.UploadResult.SUCCESS) { - RegistrationUtil.markRegistrationPossiblyComplete(requireContext()); + RegistrationUtil.maybeMarkRegistrationComplete(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 71cd6daa3f..57cae902cb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java @@ -25,7 +25,7 @@ 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(@NonNull Context context) { + public static void maybeMarkRegistrationComplete(@NonNull Context context) { if (!SignalStore.registrationValues().isRegistrationComplete() && TextSecurePreferences.isPushRegistered(context) && !Recipient.self().getProfileName().isEmpty() &&