Continue PIN code library integration (fork required)
This commit is contained in:
parent
cd38aa42aa
commit
ecdef52829
@ -42,7 +42,7 @@ allprojects {
|
||||
// PhotoView
|
||||
includeGroupByRegex 'com\\.github\\.chrisbanes'
|
||||
// PFLockScreen-Android
|
||||
includeGroupByRegex 'com\\.github\\.thealeksandr'
|
||||
includeGroupByRegex 'com\\.github\\.ganfra'
|
||||
}
|
||||
}
|
||||
maven {
|
||||
|
@ -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'
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
13
vector/src/main/res/drawable/pin_code_dot_empty.xml
Normal file
13
vector/src/main/res/drawable/pin_code_dot_empty.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
|
||||
<stroke
|
||||
android:color="?riotx_text_secondary"
|
||||
android:width="1px"/>
|
||||
|
||||
<size
|
||||
android:width="24dp"
|
||||
android:height="24dp"/>
|
||||
</shape>
|
12
vector/src/main/res/drawable/pin_code_dot_fill.xml
Normal file
12
vector/src/main/res/drawable/pin_code_dot_fill.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
|
||||
<solid
|
||||
android:color="?colorPrimary"/>
|
||||
|
||||
<size
|
||||
android:width="24dp"
|
||||
android:height="24dp"/>
|
||||
</shape>
|
9
vector/src/main/res/drawable/pin_code_dots.xml
Normal file
9
vector/src/main/res/drawable/pin_code_dots.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- NOTE: order is important (the first matching state(s) is what is rendered) -->
|
||||
<item
|
||||
android:state_checked="true"
|
||||
android:drawable="@drawable/pin_code_dot_fill"/>
|
||||
<item
|
||||
android:drawable="@drawable/pin_code_dot_empty"/>
|
||||
</selector>
|
44
vector/src/main/res/values/styles_pin_code.xml
Normal file
44
vector/src/main/res/values/styles_pin_code.xml
Normal file
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="PinCodeScreenStyle" >
|
||||
<item name="android:background">?riotx_background</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeKeyButtonStyle">
|
||||
<item name="android:textColor">?riotx_text_primary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="background">@drawable/touch_selector_pf</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeDotsViewStyle">
|
||||
<item name="android:button">@drawable/pin_code_dots</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeNextButtonStyle" parent="VectorButtonStylePositive">
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:backgroundTint">@android:color/transparent</item>
|
||||
<item name="android:layout_marginBottom">24dp</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeDeleteButtonStyle">
|
||||
<item name="android:src">@drawable/delete_lockscreen_pf</item>
|
||||
<item name="android:tint">?riotx_text_primary</item>
|
||||
<item name="background">@drawable/touch_selector_pf</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeFingerprintButtonStyle">
|
||||
<item name="android:src">@drawable/fingerprint_lockscreen_pf</item>
|
||||
<item name="android:tint">?riotx_text_primary</item>
|
||||
<item name="background">@drawable/touch_selector_pf</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeTitleStyle">
|
||||
<item name="android:textColor">?riotx_text_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="PinCodeHintStyle">
|
||||
<item name="android:textColor">?riotx_text_primary</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -222,6 +222,16 @@
|
||||
<item name="snackbarButtonStyle">@style/VectorSnackBarButton</item>
|
||||
<!-- Style to use for message text within a SnackBar in this theme. -->
|
||||
<item name="snackbarTextViewStyle">@style/VectorSnackBarText</item>
|
||||
|
||||
<item name="pf_lock_screen">@style/PinCodeScreenStyle</item>
|
||||
<item name="pf_key_button">@style/PinCodeKeyButtonStyle</item>
|
||||
<item name="pf_title">@style/PinCodeTitleStyle</item>
|
||||
<item name="pf_hint">@style/PinCodeHintStyle</item>
|
||||
<item name="pf_code_view">@style/PinCodeDotsViewStyle</item>
|
||||
<item name="pf_delete_button">@style/PinCodeDeleteButtonStyle</item>
|
||||
<item name="pf_fingerprint_button">@style/PinCodeFingerprintButtonStyle</item>
|
||||
<item name="pf_next">@style/PinCodeNextButtonStyle</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Dark" parent="AppTheme.Base.Dark" />
|
||||
|
@ -222,6 +222,16 @@
|
||||
<item name="snackbarButtonStyle">@style/VectorSnackBarButton</item>
|
||||
<!-- Style to use for message text within a SnackBar in this theme. -->
|
||||
<item name="snackbarTextViewStyle">@style/VectorSnackBarText</item>
|
||||
|
||||
<item name="pf_lock_screen">@style/PinCodeScreenStyle</item>
|
||||
<item name="pf_key_button">@style/PinCodeKeyButtonStyle</item>
|
||||
<item name="pf_title">@style/PinCodeTitleStyle</item>
|
||||
<item name="pf_hint">@style/PinCodeHintStyle</item>
|
||||
<item name="pf_code_view">@style/PinCodeDotsViewStyle</item>
|
||||
<item name="pf_delete_button">@style/PinCodeDeleteButtonStyle</item>
|
||||
<item name="pf_fingerprint_button">@style/PinCodeFingerprintButtonStyle</item>
|
||||
<item name="pf_next">@style/PinCodeNextButtonStyle</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Light" parent="AppTheme.Base.Light" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user