@@ -19,6 +19,7 @@ import app.passwordstore.util.extensions.unsafeLazy
19
19
import com.google.android.material.dialog.MaterialAlertDialogBuilder
20
20
import kotlinx.coroutines.flow.MutableStateFlow
21
21
import kotlinx.coroutines.flow.asStateFlow
22
+ import kotlinx.coroutines.flow.update
22
23
23
24
/* * [DialogFragment] to request a password from the user and forward it along. */
24
25
class PasswordDialog : DialogFragment () {
@@ -32,7 +33,7 @@ class PasswordDialog : DialogFragment() {
32
33
val builder = MaterialAlertDialogBuilder (requireContext())
33
34
builder.setView(binding.root)
34
35
builder.setTitle(R .string.password)
35
- builder.setPositiveButton(android.R .string.ok) { _, _ -> tryEmitPassword () }
36
+ builder.setPositiveButton(android.R .string.ok) { _, _ -> setPasswordAndDismiss () }
36
37
val dialog = builder.create()
37
38
dialog.window?.setSoftInputMode(WindowManager .LayoutParams .SOFT_INPUT_STATE_ALWAYS_VISIBLE )
38
39
dialog.setOnShowListener {
@@ -42,7 +43,7 @@ class PasswordDialog : DialogFragment() {
42
43
binding.passwordEditText.doOnTextChanged { _, _, _, _ -> binding.passwordField.error = null }
43
44
binding.passwordEditText.setOnKeyListener { _, keyCode, _ ->
44
45
if (keyCode == KeyEvent .KEYCODE_ENTER ) {
45
- tryEmitPassword ()
46
+ setPasswordAndDismiss ()
46
47
return @setOnKeyListener true
47
48
}
48
49
false
@@ -64,9 +65,8 @@ class PasswordDialog : DialogFragment() {
64
65
finish()
65
66
}
66
67
67
- @Suppress(" ControlFlowWithEmptyBody" )
68
- private fun tryEmitPassword () {
69
- do {} while (! _password .tryEmit(binding.passwordEditText.text.toString()))
68
+ private fun setPasswordAndDismiss () {
69
+ _password .update { binding.passwordEditText.text.toString() }
70
70
dismissAllowingStateLoss()
71
71
}
72
72
}
0 commit comments