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 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7de46fce9e..6f270e44a0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1851,6 +1851,7 @@
Signal PIN
PIN
Change
+ Create
Your PIN adds an extra layer of security and backs up your account. You\'ll be asked for it when you register your phone number with Signal. If you forget your PIN, you\'ll be locked out of your account for 7 days.
None
The Registration Lock PIN is not the same as the SMS verification code you just received. Please enter the PIN you previously configured in the application.