From 245aa6e9e714cd55e54e9a613f57da3d8982f482 Mon Sep 17 00:00:00 2001
From: Onuray Sahin <onurays@element.io>
Date: Fri, 27 Nov 2020 17:17:24 +0300
Subject: [PATCH] Create a new pin when tap on change pin item.

---
 .../app/features/settings/VectorPreferences.kt   |  1 +
 .../settings/VectorSettingsPinFragment.kt        | 16 ++++++++++++++++
 vector/src/main/res/values/strings.xml           |  2 +-
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
index 5872c1fa1c..9d6ed0246c 100755
--- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
@@ -165,6 +165,7 @@ class VectorPreferences @Inject constructor(private val context: Context) {
         // Security
         const val SETTINGS_SECURITY_USE_FLAG_SECURE = "SETTINGS_SECURITY_USE_FLAG_SECURE"
         const val SETTINGS_SECURITY_USE_PIN_CODE_FLAG = "SETTINGS_SECURITY_USE_PIN_CODE_FLAG"
+        const val SETTINGS_SECURITY_CHANGE_PIN_CODE_FLAG = "SETTINGS_SECURITY_CHANGE_PIN_CODE_FLAG"
         private const val SETTINGS_SECURITY_USE_BIOMETRICS_FLAG = "SETTINGS_SECURITY_USE_BIOMETRICS_FLAG"
         private const val SETTINGS_SECURITY_USE_GRACE_PERIOD_FLAG = "SETTINGS_SECURITY_USE_GRACE_PERIOD_FLAG"
         const val SETTINGS_SECURITY_USE_COMPLETE_NOTIFICATIONS_FLAG = "SETTINGS_SECURITY_USE_COMPLETE_NOTIFICATIONS_FLAG"
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPinFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPinFragment.kt
index 37465258f6..94328dc44a 100644
--- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPinFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPinFragment.kt
@@ -21,6 +21,7 @@ import androidx.preference.Preference
 import androidx.preference.SwitchPreference
 import im.vector.app.R
 import im.vector.app.core.extensions.registerStartForActivityResult
+import im.vector.app.core.preference.VectorPreference
 import im.vector.app.features.navigation.Navigator
 import im.vector.app.features.notifications.NotificationDrawerManager
 import im.vector.app.features.pin.PinCodeStore
@@ -41,6 +42,10 @@ class VectorSettingsPinFragment @Inject constructor(
         findPreference<SwitchPreference>(VectorPreferences.SETTINGS_SECURITY_USE_PIN_CODE_FLAG)!!
     }
 
+    private val changePinCodePref by lazy {
+        findPreference<VectorPreference>(VectorPreferences.SETTINGS_SECURITY_CHANGE_PIN_CODE_FLAG)!!
+    }
+
     private val useCompleteNotificationPref by lazy {
         findPreference<SwitchPreference>(VectorPreferences.SETTINGS_SECURITY_USE_COMPLETE_NOTIFICATIONS_FLAG)!!
     }
@@ -74,6 +79,17 @@ class VectorSettingsPinFragment @Inject constructor(
                 }
                 true
             }
+
+            changePinCodePref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+                if (hasPinCode) {
+                    navigator.openPinCode(
+                            requireContext(),
+                            pinActivityResultLauncher,
+                            PinMode.CREATE
+                    )
+                }
+                true
+            }
         }
     }
 
diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml
index 1641617fb1..bbb09e8df8 100644
--- a/vector/src/main/res/values/strings.xml
+++ b/vector/src/main/res/values/strings.xml
@@ -2687,7 +2687,7 @@
     <string name="settings_security_pin_code_grace_period_summary_on">PIN code is required after 2 minutes of not using Element.</string>
     <string name="settings_security_pin_code_grace_period_summary_off">PIN code is required every time you open Element.</string>
     <string name="settings_security_pin_code_change_pin_title">Change PIN</string>
-    <string name="settings_security_pin_code_change_pin_summary">Change the current PIN, you will have to validate your current PIN first.</string>
+    <string name="settings_security_pin_code_change_pin_summary">Change your current PIN</string>
     <string name="auth_pin_confirm_to_disable_title">Confirm PIN to disable PIN</string>
     <string name="error_opening_banned_room">Can\'t open a room where you are banned from.</string>
     <string name="room_error_not_found">Can\'t find this room. Make sure it exists.</string>