mirror of
https://github.com/android-password-store/Android-Password-Store
synced 2025-08-30 05:48:09 +00:00
refactor: simplify PasswordDialog
emissions
This commit is contained in:
parent
6dcffc04d2
commit
6615992332
@ -19,6 +19,7 @@ import app.passwordstore.util.extensions.unsafeLazy
|
|||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
import kotlinx.coroutines.flow.update
|
||||||
|
|
||||||
/** [DialogFragment] to request a password from the user and forward it along. */
|
/** [DialogFragment] to request a password from the user and forward it along. */
|
||||||
class PasswordDialog : DialogFragment() {
|
class PasswordDialog : DialogFragment() {
|
||||||
@ -32,7 +33,7 @@ class PasswordDialog : DialogFragment() {
|
|||||||
val builder = MaterialAlertDialogBuilder(requireContext())
|
val builder = MaterialAlertDialogBuilder(requireContext())
|
||||||
builder.setView(binding.root)
|
builder.setView(binding.root)
|
||||||
builder.setTitle(R.string.password)
|
builder.setTitle(R.string.password)
|
||||||
builder.setPositiveButton(android.R.string.ok) { _, _ -> tryEmitPassword() }
|
builder.setPositiveButton(android.R.string.ok) { _, _ -> setPasswordAndDismiss() }
|
||||||
val dialog = builder.create()
|
val dialog = builder.create()
|
||||||
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
||||||
dialog.setOnShowListener {
|
dialog.setOnShowListener {
|
||||||
@ -42,7 +43,7 @@ class PasswordDialog : DialogFragment() {
|
|||||||
binding.passwordEditText.doOnTextChanged { _, _, _, _ -> binding.passwordField.error = null }
|
binding.passwordEditText.doOnTextChanged { _, _, _, _ -> binding.passwordField.error = null }
|
||||||
binding.passwordEditText.setOnKeyListener { _, keyCode, _ ->
|
binding.passwordEditText.setOnKeyListener { _, keyCode, _ ->
|
||||||
if (keyCode == KeyEvent.KEYCODE_ENTER) {
|
if (keyCode == KeyEvent.KEYCODE_ENTER) {
|
||||||
tryEmitPassword()
|
setPasswordAndDismiss()
|
||||||
return@setOnKeyListener true
|
return@setOnKeyListener true
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
@ -64,9 +65,8 @@ class PasswordDialog : DialogFragment() {
|
|||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("ControlFlowWithEmptyBody")
|
private fun setPasswordAndDismiss() {
|
||||||
private fun tryEmitPassword() {
|
_password.update { binding.passwordEditText.text.toString() }
|
||||||
do {} while (!_password.tryEmit(binding.passwordEditText.text.toString()))
|
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user