From e14861d79dc812c43148b36c572959e359fd37e7 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 3 Feb 2020 12:32:14 -0400 Subject: [PATCH] CreatePinActivity naming update and copy fixes. --- .../lock/RegistrationLockDialog.java | 2 +- .../lock/v2/ConfirmKbsPinFragment.java | 12 +++---- .../lock/v2/CreateKbsPinActivity.java | 35 +++++++++++++------ .../lock/v2/CreateKbsPinFragment.java | 32 +++++++++++------ .../securesms/lock/v2/KbsSplashFragment.java | 11 +++--- .../securesms/megaphone/Megaphones.java | 2 +- .../AppProtectionPreferenceFragment.java | 3 +- .../RegistrationCompleteFragment.java | 11 +++--- .../main/res/navigation/create_kbs_pin.xml | 9 +++-- app/src/main/res/navigation/kbs_migration.xml | 9 ++++- app/src/main/res/values/strings.xml | 9 +++-- 11 files changed, 87 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java b/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java index 662133f27a..23bc6b2523 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/RegistrationLockDialog.java @@ -124,7 +124,7 @@ public final class RegistrationLockDialog { dialog.dismiss(); RegistrationLockReminders.scheduleReminder(context, true); - fragment.startActivityForResult(CreateKbsPinActivity.getIntentForPinUpdate(context), CreateKbsPinActivity.REQUEST_NEW_PIN); + fragment.startActivityForResult(CreateKbsPinActivity.getIntentForPinChangeFromForgotPin(context), CreateKbsPinActivity.REQUEST_NEW_PIN); } }; 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 fb1293db04..2cf8fcc5b3 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 @@ -24,22 +24,22 @@ import org.thoughtcrime.securesms.util.SpanUtil; public class ConfirmKbsPinFragment extends BaseKbsPinFragment { - private ConfirmKbsPinFragmentArgs args; private ConfirmKbsPinViewModel viewModel; @Override protected void initializeViewStates() { - args = ConfirmKbsPinFragmentArgs.fromBundle(requireArguments()); + ConfirmKbsPinFragmentArgs args = ConfirmKbsPinFragmentArgs.fromBundle(requireArguments()); - if (args.getIsNewPin()) { - initializeViewStatesForPinCreate(); + if (args.getIsPinChange()) { + initializeViewStatesForPinChange(); } else { - initializeViewStatesForPinUpdate(); + initializeViewStatesForPinCreate(); } } @Override protected ConfirmKbsPinViewModel initializeViewModel() { + ConfirmKbsPinFragmentArgs args = ConfirmKbsPinFragmentArgs.fromBundle(requireArguments()); KbsPin userEntry = Preconditions.checkNotNull(args.getUserEntry()); PinKeyboardType keyboard = args.getKeyboard(); ConfirmKbsPinRepository repository = new ConfirmKbsPinRepository(); @@ -60,7 +60,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment { - private CreateKbsPinFragmentArgs args; + private static final int PIN_LOCKOUT_DAYS = 7; @Override protected void initializeViewStates() { - args = CreateKbsPinFragmentArgs.fromBundle(requireArguments()); + CreateKbsPinFragmentArgs args = CreateKbsPinFragmentArgs.fromBundle(requireArguments()); - if (args.getIsNewPin()) { - initializeViewStatesForPinCreate(); + if (args.getIsPinChange()) { + initializeViewStatesForPinChange(args.getIsForgotPin()); } else { - initializeViewStatesForPinUpdate(); + initializeViewStatesForPinCreate(); } getLabel().setText(getPinLengthRestrictionText(R.plurals.CreateKbsPinFragment__pin_must_be_at_least_digits)); getConfirm().setEnabled(false); } - private void initializeViewStatesForPinUpdate() { + private void initializeViewStatesForPinChange(boolean isForgotPin) { getTitle().setText(R.string.CreateKbsPinFragment__create_a_new_pin); - getDescription().setText(R.string.CreateKbsPinFragment__because_youre_still_logged_in); + + if (isForgotPin) { + getDescription().setText(requireContext().getResources() + .getQuantityString(R.plurals.CreateKbsPinFragment__you_can_choose_a_new_pin_because_this_device_is_registered, + PIN_LOCKOUT_DAYS, + PIN_LOCKOUT_DAYS)); + } else { + getDescription().setText(R.string.CreateKbsPinFragment__pins_add_an_extra_layer_of_security); + } } private void initializeViewStatesForPinCreate() { @@ -37,9 +45,11 @@ public class CreateKbsPinFragment extends BaseKbsPinFragment onConfirmPin(e.getUserEntry(), e.getKeyboard())); + + viewModel.getNavigationEvents().observe(getViewLifecycleOwner(), e -> onConfirmPin(e.getUserEntry(), e.getKeyboard(), args.getIsPinChange())); viewModel.getKeyboard().observe(getViewLifecycleOwner(), k -> { getLabel().setText(getLabelText(k)); getInput().getText().clear(); @@ -48,12 +58,12 @@ public class CreateKbsPinFragment extends BaseKbsPinFragment onCreatePin()); secondaryAction.setOnClickListener(v -> onLearnMore()); - if (TextSecurePreferences.isV1RegistrationLockEnabled(requireContext())) { + if (PinUtil.userHasPin(requireContext())) { setUpRegLockEnabled(); } else { setUpRegLockDisabled(); @@ -74,7 +71,11 @@ public final class KbsSplashFragment extends Fragment { } private void onCreatePin() { - Navigation.findNavController(requireView()).navigate(KbsSplashFragmentDirections.actionCreateKbsPin()); + KbsSplashFragmentDirections.ActionCreateKbsPin action = KbsSplashFragmentDirections.actionCreateKbsPin(); + + action.setIsPinChange(PinUtil.userHasPin(requireContext())); + + Navigation.findNavController(requireView()).navigate(action); } private void onLearnMore() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java index d7a1517e44..c949a6f344 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java @@ -130,7 +130,7 @@ public final class Megaphones { return builder.setTitle(R.string.KbsMegaphone__introducing_pins) .setBody(R.string.KbsMegaphone__your_registration_lock_is_now_called_a_pin) .setButtonText(R.string.KbsMegaphone__update_pin, (megaphone, listener) -> { - Intent intent = CreateKbsPinActivity.getIntentForPinUpdate(ApplicationDependencies.getApplication()); + Intent intent = CreateKbsPinActivity.getIntentForPinChangeFromSettings(ApplicationDependencies.getApplication()); listener.onMegaphoneNavigationRequested(intent, CreateKbsPinActivity.REQUEST_NEW_PIN); }) diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index e90fb6b015..a7cd846d2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -4,7 +4,6 @@ import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.widget.Button; import android.widget.Toast; import androidx.annotation.Nullable; @@ -182,7 +181,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment private class KbsPinUpdateListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { - startActivityForResult(CreateKbsPinActivity.getIntentForPinUpdate(requireContext()), CreateKbsPinActivity.REQUEST_NEW_PIN); + startActivityForResult(CreateKbsPinActivity.getIntentForPinChangeFromSettings(requireContext()), CreateKbsPinActivity.REQUEST_NEW_PIN); return true; } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java index 841cfac4bb..969110180f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.java @@ -36,13 +36,13 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment if (!isReregister()) { final Intent main = new Intent(activity, MainActivity.class); - final Intent next = getRoutedIntent(activity, EditProfileActivity.class, main); + final Intent next = chainIntents(new Intent(activity, EditProfileActivity.class), main); next.putExtra(EditProfileActivity.SHOW_TOOLBAR, false); Context context = requireContext(); if (FeatureFlags.pinsForAll() && !PinUtil.userHasPin(context)) { - activity.startActivity(getRoutedIntent(activity, CreateKbsPinActivity.class, next)); + activity.startActivity(chainIntents(CreateKbsPinActivity.getIntentForPinCreate(context), next)); } else { activity.startActivity(next); } @@ -52,9 +52,8 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment ActivityNavigator.applyPopAnimationsToPendingTransition(activity); } - private static Intent getRoutedIntent(@NonNull Context context, Class destination, @Nullable Intent nextIntent) { - final Intent intent = new Intent(context, destination); - if (nextIntent != null) intent.putExtra("next_intent", nextIntent); - return intent; + private static Intent chainIntents(@NonNull Intent sourceIntent, @Nullable Intent nextIntent) { + if (nextIntent != null) sourceIntent.putExtra("next_intent", nextIntent); + return sourceIntent; } } diff --git a/app/src/main/res/navigation/create_kbs_pin.xml b/app/src/main/res/navigation/create_kbs_pin.xml index 065d487cea..f15a354806 100644 --- a/app/src/main/res/navigation/create_kbs_pin.xml +++ b/app/src/main/res/navigation/create_kbs_pin.xml @@ -21,7 +21,12 @@ + + @@ -34,7 +39,7 @@ + app:popExitAnim="@anim/nav_default_pop_exit_anim" > + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e74e0b6606..3943b20a2f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1698,7 +1698,10 @@ PIN must be at least %1$d digits Create a new PIN - Because you\'re still logged in, you can create a new PIN. When you\'re logged out, there is no way to recover your PIN. + + You can choose a new PIN because this device is registered. If you forget your PIN, you may need to wait %1$d day to register again. + You can choose a new PIN because this device is registered. If you forget your PIN, you may need to wait %1$d days to register again. + Create your PIN PINs add an extra layer of security to your account. It\'s important to remember this PIN, as it can\'t be recovered. @@ -1715,7 +1718,7 @@ Introducing PINs PINs add another level of security to your account. Create one now. Learn More - https://signal.org/blog/secure-value-recovery/ + https://support.signal.org/hc/en-us/articles/360007059792-Registration-Lock Registration Lock = PIN Your Registration Lock is now called a PIN, and it does more. Update it now. Read more about PINs. @@ -1735,7 +1738,7 @@ Your account has been locked to protect your privacy and security. After %1$d days of inactivity in your account you\'ll be able to re-register this phone number without needing your pin. All content will be deleted. Next Learn More - https://signal.org/blog/secure-value-recovery/ + https://support.signal.org/hc/en-us/articles/360007059792-Registration-Lock Enter your PIN