Fix issue with tracking registration state.

This commit is contained in:
Greyson Parrelli 2020-07-13 18:52:30 -04:00
parent 6515a6188b
commit 4b9277629c
7 changed files with 22 additions and 9 deletions

View file

@ -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) {

View file

@ -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;
}

View file

@ -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<ViewModel extends BaseKbsPinViewModel> extends
}
private void onPinSkipped() {
PinOptOutDialog.show(requireContext(), this::closeNavGraphBranch);
PinOptOutDialog.show(requireContext(), () -> {
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
closeNavGraphBranch();
});
}
}

View file

@ -117,7 +117,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment<ConfirmKbsPinViewM
public void onAnimationEnd(Animator animation) {
requireActivity().setResult(Activity.RESULT_OK);
closeNavGraphBranch();
RegistrationUtil.markRegistrationPossiblyComplete();
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
StorageSyncHelper.scheduleSyncForDataChange();
}
});
@ -126,7 +126,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment<ConfirmKbsPinViewM
startEndAnimationOnNextProgressRepetition(R.raw.lottie_kbs_failure, new AnimationCompleteListener() {
@Override
public void onAnimationEnd(Animator animation) {
RegistrationUtil.markRegistrationPossiblyComplete();
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
displayFailedDialog();
}
});

View file

@ -239,7 +239,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
profile.putExtra("next_intent", main);
startActivity(profile);
} else {
RegistrationUtil.markRegistrationPossiblyComplete();
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
startActivity(new Intent(activity, MainActivity.class));
}

View file

@ -336,7 +336,7 @@ public class EditProfileFragment extends LoggingFragment {
private void handleUpload() {
viewModel.submitProfile(uploadResult -> {
if (uploadResult == EditProfileRepository.UploadResult.SUCCESS) {
RegistrationUtil.markRegistrationPossiblyComplete();
RegistrationUtil.markRegistrationPossiblyComplete(requireContext());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) handleFinishedLollipop();
else handleFinishedLegacy();

View file

@ -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())