Delay directory refresh until registration is complete.
parent
8128fcf8bc
commit
5ea132e712
|
@ -136,7 +136,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi
|
||||||
RefreshPreKeysJob.scheduleIfNecessary();
|
RefreshPreKeysJob.scheduleIfNecessary();
|
||||||
StorageSyncHelper.scheduleRoutineSync();
|
StorageSyncHelper.scheduleRoutineSync();
|
||||||
RetrieveProfileJob.enqueueRoutineFetchIfNeccessary(this);
|
RetrieveProfileJob.enqueueRoutineFetchIfNeccessary(this);
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(this);
|
RegistrationUtil.maybeMarkRegistrationComplete(this);
|
||||||
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
|
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT < 21) {
|
if (Build.VERSION.SDK_INT < 21) {
|
||||||
|
|
|
@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
||||||
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
|
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||||
import org.thoughtcrime.securesms.sms.IncomingJoinedMessage;
|
import org.thoughtcrime.securesms.sms.IncomingJoinedMessage;
|
||||||
|
@ -55,11 +56,9 @@ import java.io.IOException;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
@ -76,12 +75,18 @@ public class DirectoryHelper {
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
public static void refreshDirectory(@NonNull Context context, boolean notifyOfNewUsers) throws IOException {
|
public static void refreshDirectory(@NonNull Context context, boolean notifyOfNewUsers) throws IOException {
|
||||||
if (TextUtils.isEmpty(TextSecurePreferences.getLocalNumber(context))) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Permissions.hasAll(context, Manifest.permission.WRITE_CONTACTS)) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.thoughtcrime.securesms.LoggingFragment;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||||
import org.thoughtcrime.securesms.pin.PinOptOutDialog;
|
import org.thoughtcrime.securesms.pin.PinOptOutDialog;
|
||||||
import org.thoughtcrime.securesms.pin.PinState;
|
|
||||||
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
||||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||||
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
|
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
|
||||||
|
@ -217,7 +216,7 @@ abstract class BaseKbsPinFragment<ViewModel extends BaseKbsPinViewModel> extends
|
||||||
|
|
||||||
private void onPinSkipped() {
|
private void onPinSkipped() {
|
||||||
PinOptOutDialog.show(requireContext(), () -> {
|
PinOptOutDialog.show(requireContext(), () -> {
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||||
closeNavGraphBranch();
|
closeNavGraphBranch();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,7 @@ package org.thoughtcrime.securesms.lock.v2;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.autofill.AutofillManager;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.RawRes;
|
import androidx.annotation.RawRes;
|
||||||
|
@ -21,7 +19,6 @@ import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.animation.AnimationCompleteListener;
|
import org.thoughtcrime.securesms.animation.AnimationCompleteListener;
|
||||||
import org.thoughtcrime.securesms.animation.AnimationRepeatListener;
|
import org.thoughtcrime.securesms.animation.AnimationRepeatListener;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
|
||||||
import org.thoughtcrime.securesms.megaphone.Megaphones;
|
import org.thoughtcrime.securesms.megaphone.Megaphones;
|
||||||
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
||||||
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
|
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
|
||||||
|
@ -117,7 +114,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment<ConfirmKbsPinViewM
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
requireActivity().setResult(Activity.RESULT_OK);
|
requireActivity().setResult(Activity.RESULT_OK);
|
||||||
closeNavGraphBranch();
|
closeNavGraphBranch();
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||||
StorageSyncHelper.scheduleSyncForDataChange();
|
StorageSyncHelper.scheduleSyncForDataChange();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -126,7 +123,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment<ConfirmKbsPinViewM
|
||||||
startEndAnimationOnNextProgressRepetition(R.raw.lottie_kbs_failure, new AnimationCompleteListener() {
|
startEndAnimationOnNextProgressRepetition(R.raw.lottie_kbs_failure, new AnimationCompleteListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||||
displayFailedDialog();
|
displayFailedDialog();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.pin;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -19,7 +18,6 @@ import androidx.annotation.StringRes;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.autofill.HintConstants;
|
import androidx.autofill.HintConstants;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.lifecycle.ViewModelProviders;
|
import androidx.lifecycle.ViewModelProviders;
|
||||||
import androidx.navigation.Navigation;
|
import androidx.navigation.Navigation;
|
||||||
|
|
||||||
|
@ -239,7 +237,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
||||||
profile.putExtra("next_intent", main);
|
profile.putExtra("next_intent", main);
|
||||||
startActivity(profile);
|
startActivity(profile);
|
||||||
} else {
|
} else {
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||||
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
||||||
startActivity(new Intent(activity, MainActivity.class));
|
startActivity(new Intent(activity, MainActivity.class));
|
||||||
}
|
}
|
||||||
|
@ -288,12 +286,4 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
||||||
button.setClickable(true);
|
button.setClickable(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getDevice() {
|
|
||||||
return String.format("%s %s (%s)", Build.MANUFACTURER, Build.MODEL, Build.PRODUCT);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getAndroidVersion() {
|
|
||||||
return String.format("%s (%s, %s)", Build.VERSION.RELEASE, Build.VERSION.INCREMENTAL, Build.DISPLAY);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.jobs.StorageAccountRestoreJob;
|
import org.thoughtcrime.securesms.jobs.StorageAccountRestoreJob;
|
||||||
|
import org.thoughtcrime.securesms.jobs.StorageSyncJob;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||||
import org.thoughtcrime.securesms.logging.Log;
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.registration.service.KeyBackupSystemWrongPinException;
|
import org.thoughtcrime.securesms.registration.service.KeyBackupSystemWrongPinException;
|
||||||
|
@ -18,6 +19,7 @@ import org.whispersystems.signalservice.internal.contacts.entities.TokenResponse
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
class PinRestoreRepository {
|
class PinRestoreRepository {
|
||||||
|
|
||||||
|
@ -51,6 +53,9 @@ class PinRestoreRepository {
|
||||||
ApplicationDependencies.getJobManager().runSynchronously(new StorageAccountRestoreJob(), StorageAccountRestoreJob.LIFESPAN);
|
ApplicationDependencies.getJobManager().runSynchronously(new StorageAccountRestoreJob(), StorageAccountRestoreJob.LIFESPAN);
|
||||||
stopwatch.split("AccountRestore");
|
stopwatch.split("AccountRestore");
|
||||||
|
|
||||||
|
ApplicationDependencies.getJobManager().runSynchronously(new StorageSyncJob(), TimeUnit.SECONDS.toMillis(10));
|
||||||
|
stopwatch.split("ContactRestore");
|
||||||
|
|
||||||
stopwatch.stop(TAG);
|
stopwatch.stop(TAG);
|
||||||
|
|
||||||
callback.onComplete(new PinResultData(PinResult.SUCCESS, tokenData));
|
callback.onComplete(new PinResultData(PinResult.SUCCESS, tokenData));
|
||||||
|
|
|
@ -32,13 +32,11 @@ import com.google.android.gms.common.util.IOUtils;
|
||||||
import org.thoughtcrime.securesms.LoggingFragment;
|
import org.thoughtcrime.securesms.LoggingFragment;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
|
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
|
||||||
import org.thoughtcrime.securesms.groups.GroupId;
|
import org.thoughtcrime.securesms.groups.GroupId;
|
||||||
import org.thoughtcrime.securesms.logging.Log;
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.mediasend.AvatarSelectionActivity;
|
import org.thoughtcrime.securesms.mediasend.AvatarSelectionActivity;
|
||||||
import org.thoughtcrime.securesms.mediasend.AvatarSelectionBottomSheetDialogFragment;
|
import org.thoughtcrime.securesms.mediasend.AvatarSelectionBottomSheetDialogFragment;
|
||||||
import org.thoughtcrime.securesms.mediasend.Media;
|
import org.thoughtcrime.securesms.mediasend.Media;
|
||||||
import org.thoughtcrime.securesms.megaphone.Megaphones;
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||||
import org.thoughtcrime.securesms.profiles.ProfileName;
|
import org.thoughtcrime.securesms.profiles.ProfileName;
|
||||||
|
@ -336,7 +334,7 @@ public class EditProfileFragment extends LoggingFragment {
|
||||||
private void handleUpload() {
|
private void handleUpload() {
|
||||||
viewModel.submitProfile(uploadResult -> {
|
viewModel.submitProfile(uploadResult -> {
|
||||||
if (uploadResult == EditProfileRepository.UploadResult.SUCCESS) {
|
if (uploadResult == EditProfileRepository.UploadResult.SUCCESS) {
|
||||||
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) handleFinishedLollipop();
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) handleFinishedLollipop();
|
||||||
else handleFinishedLegacy();
|
else handleFinishedLegacy();
|
||||||
|
|
|
@ -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
|
* path a user has taken. This will only truly mark registration as complete if all of the
|
||||||
* requirements are met.
|
* requirements are met.
|
||||||
*/
|
*/
|
||||||
public static void markRegistrationPossiblyComplete(@NonNull Context context) {
|
public static void maybeMarkRegistrationComplete(@NonNull Context context) {
|
||||||
if (!SignalStore.registrationValues().isRegistrationComplete() &&
|
if (!SignalStore.registrationValues().isRegistrationComplete() &&
|
||||||
TextSecurePreferences.isPushRegistered(context) &&
|
TextSecurePreferences.isPushRegistered(context) &&
|
||||||
!Recipient.self().getProfileName().isEmpty() &&
|
!Recipient.self().getProfileName().isEmpty() &&
|
||||||
|
|
Loading…
Reference in New Issue