diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/CreateKbsPinActivity.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/CreateKbsPinActivity.java index cacc0f12a4..5340a9ea5b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/CreateKbsPinActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/CreateKbsPinActivity.java @@ -26,14 +26,16 @@ public class CreateKbsPinActivity extends BaseActionBarActivity { private final DynamicTheme dynamicTheme = new DynamicRegistrationTheme(); public static Intent getIntentForPinCreate(@NonNull Context context) { - return new Intent(context, CreateKbsPinActivity.class); + return getIntent(context, true); } public static Intent getIntentForPinUpdate(@NonNull Context context) { - Intent intent = getIntentForPinCreate(context); - - intent.putExtra(IS_NEW_PIN, true); + return getIntent(context, false); + } + private static Intent getIntent(@NonNull Context context, boolean isNewPin) { + Intent intent = new Intent(context, CreateKbsPinActivity.class); + intent.putExtra(IS_NEW_PIN, isNewPin); return intent; } 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 6038d04dee..e90fb6b015 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -4,6 +4,7 @@ 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; @@ -23,7 +24,6 @@ import org.thoughtcrime.securesms.crypto.MasterSecretUtil; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; import org.thoughtcrime.securesms.jobs.RefreshAttributesJob; -import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.lock.RegistrationLockDialog; import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity; import org.thoughtcrime.securesms.lock.v2.PinUtil; @@ -56,8 +56,16 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment Preference kbsGroup = this.findPreference("prefs_lock_v2"); if (FeatureFlags.pinsForAll()) { + Preference preference = this.findPreference("pref_kbs_change"); regGroup.setVisible(false); - kbsPinChange.setOnPreferenceClickListener(new KbsPinChangeListener()); + + if (PinUtil.userHasPin(ApplicationDependencies.getApplication())) { + kbsPinChange.setOnPreferenceClickListener(new KbsPinUpdateListener()); + preference.setWidgetLayoutResource(R.layout.kbs_pin_change_preference); + } else { + kbsPinChange.setOnPreferenceClickListener(new KbsPinCreateListener()); + preference.setWidgetLayoutResource(R.layout.kbs_pin_create_preference); + } } else { kbsGroup.setVisible(false); regLock.setChecked(PinUtil.userHasPin(requireContext())); @@ -171,7 +179,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment } } - private class KbsPinChangeListener implements Preference.OnPreferenceClickListener { + private class KbsPinUpdateListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { startActivityForResult(CreateKbsPinActivity.getIntentForPinUpdate(requireContext()), CreateKbsPinActivity.REQUEST_NEW_PIN); @@ -179,6 +187,14 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment } } + private class KbsPinCreateListener implements Preference.OnPreferenceClickListener { + @Override + public boolean onPreferenceClick(Preference preference) { + startActivityForResult(CreateKbsPinActivity.getIntentForPinCreate(requireContext()), CreateKbsPinActivity.REQUEST_NEW_PIN); + return true; + } + } + private class AccountLockClickListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { diff --git a/app/src/main/res/layout/kbs_pin_create_preference.xml b/app/src/main/res/layout/kbs_pin_create_preference.xml new file mode 100644 index 0000000000..fcf32adf88 --- /dev/null +++ b/app/src/main/res/layout/kbs_pin_create_preference.xml @@ -0,0 +1,10 @@ + +