diff --git a/build.gradle b/build.gradle
index 5593a56f6e..12c5181ea4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -42,7 +42,7 @@ allprojects {
// PhotoView
includeGroupByRegex 'com\\.github\\.chrisbanes'
// PFLockScreen-Android
- includeGroupByRegex 'com\\.github\\.thealeksandr'
+ includeGroupByRegex 'com\\.github\\.ganfra'
}
}
maven {
diff --git a/vector/build.gradle b/vector/build.gradle
index 0d654438f5..f60f74629f 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -346,7 +346,7 @@ dependencies {
implementation 'me.saket:better-link-movement-method:2.2.0'
implementation 'com.google.android:flexbox:1.1.1'
implementation "androidx.autofill:autofill:$autofill_version"
- implementation 'com.github.thealeksandr:PFLockScreen-Android:1.0.0-beta7'
+ implementation 'com.github.ganfra:PFLockScreen-Android:1.0.0-beta8'
// Custom Tab
implementation 'androidx.browser:browser:1.2.0'
diff --git a/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt b/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
index 1fc1270192..fc0d3b1bcb 100644
--- a/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
+++ b/vector/src/main/java/im/vector/riotx/features/pin/PinActivity.kt
@@ -18,16 +18,16 @@ package im.vector.riotx.features.pin
import android.content.Context
import android.content.Intent
+import android.widget.Toast
+import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import com.beautycoder.pflockscreen.PFFLockScreenConfiguration
import com.beautycoder.pflockscreen.fragments.PFLockScreenFragment
import com.beautycoder.pflockscreen.fragments.PFLockScreenFragment.OnPFLockScreenCodeCreateListener
import im.vector.riotx.R
-import im.vector.riotx.core.extensions.addFragment
import im.vector.riotx.core.extensions.replaceFragment
import im.vector.riotx.core.platform.ToolbarConfigurable
import im.vector.riotx.core.platform.VectorBaseActivity
-import timber.log.Timber
class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
@@ -41,9 +41,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
override fun getLayoutRes() = R.layout.activity_simple
override fun initUiAndData() {
- if (isFirstCreation()) {
- showCreateFragment()
- }
+ showCreateFragment()
}
override fun configure(toolbar: Toolbar) {
@@ -57,6 +55,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
.setTitle("Choose a PIN for security")
.setNewCodeValidationTitle("Confirm PIN")
.setMode(PFFLockScreenConfiguration.MODE_CREATE)
+
createFragment.setConfiguration(builder.build())
createFragment.setCodeCreateListener(object : OnPFLockScreenCodeCreateListener {
override fun onNewCodeValidationFailed() {
@@ -66,7 +65,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
showAuthFragment(encodedCode)
}
})
- addFragment(R.id.simpleFragmentContainer, createFragment)
+ replaceFragment(R.id.simpleFragmentContainer, createFragment)
}
private fun showAuthFragment(encodedCode: String) {
@@ -75,25 +74,41 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigurable {
.setUseFingerprint(true)
.setTitle("Enter your PIN")
.setLeftButton("Forgot PIN?")
+ .setClearCodeOnError(true)
.setMode(PFFLockScreenConfiguration.MODE_AUTH)
authFragment.setConfiguration(builder.build())
authFragment.setEncodedPinCode(encodedCode)
authFragment.setOnLeftButtonClickListener {
-
+ displayForgotPinWarningDialog()
}
authFragment.setLoginListener(object : PFLockScreenFragment.OnPFLockScreenLoginListener {
override fun onPinLoginFailed() {
}
override fun onFingerprintSuccessful() {
+ Toast.makeText(this@PinActivity, "Pin successful", Toast.LENGTH_LONG).show()
+ finish()
}
override fun onFingerprintLoginFailed() {
}
override fun onCodeInputSuccessful() {
+ Toast.makeText(this@PinActivity, "Pin successful", Toast.LENGTH_LONG).show()
+ finish()
}
})
replaceFragment(R.id.simpleFragmentContainer, authFragment)
}
+
+ private fun displayForgotPinWarningDialog() {
+ AlertDialog.Builder(this)
+ .setTitle("Reset pin")
+ .setMessage("To reset your PIN, you'll need to re-login and create a new one.")
+ .setPositiveButton("Reset pin") { _, _ ->
+ showCreateFragment()
+ }
+ .setNegativeButton(R.string.cancel, null)
+ .show()
+ }
}
diff --git a/vector/src/main/res/drawable/pin_code_dot_empty.xml b/vector/src/main/res/drawable/pin_code_dot_empty.xml
new file mode 100644
index 0000000000..6ee800a07d
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dot_empty.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/pin_code_dot_fill.xml b/vector/src/main/res/drawable/pin_code_dot_fill.xml
new file mode 100644
index 0000000000..799ea30174
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dot_fill.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/pin_code_dots.xml b/vector/src/main/res/drawable/pin_code_dots.xml
new file mode 100644
index 0000000000..29e445e511
--- /dev/null
+++ b/vector/src/main/res/drawable/pin_code_dots.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values/styles_pin_code.xml b/vector/src/main/res/values/styles_pin_code.xml
new file mode 100644
index 0000000000..498b791e05
--- /dev/null
+++ b/vector/src/main/res/values/styles_pin_code.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values/theme_dark.xml b/vector/src/main/res/values/theme_dark.xml
index fae33cf6bf..a391e48cfb 100644
--- a/vector/src/main/res/values/theme_dark.xml
+++ b/vector/src/main/res/values/theme_dark.xml
@@ -222,6 +222,16 @@
- @style/VectorSnackBarButton
- @style/VectorSnackBarText
+
+ - @style/PinCodeScreenStyle
+ - @style/PinCodeKeyButtonStyle
+ - @style/PinCodeTitleStyle
+ - @style/PinCodeHintStyle
+ - @style/PinCodeDotsViewStyle
+ - @style/PinCodeDeleteButtonStyle
+ - @style/PinCodeFingerprintButtonStyle
+ - @style/PinCodeNextButtonStyle
+
diff --git a/vector/src/main/res/values/theme_light.xml b/vector/src/main/res/values/theme_light.xml
index 28b29094e5..cfd7b7cc81 100644
--- a/vector/src/main/res/values/theme_light.xml
+++ b/vector/src/main/res/values/theme_light.xml
@@ -222,6 +222,16 @@
- @style/VectorSnackBarButton
- @style/VectorSnackBarText
+
+ - @style/PinCodeScreenStyle
+ - @style/PinCodeKeyButtonStyle
+ - @style/PinCodeTitleStyle
+ - @style/PinCodeHintStyle
+ - @style/PinCodeDotsViewStyle
+ - @style/PinCodeDeleteButtonStyle
+ - @style/PinCodeFingerprintButtonStyle
+ - @style/PinCodeNextButtonStyle
+