@ -13,7 +13,6 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.appcompat.view.menu.ActionMenuItemView
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
@ -57,7 +56,6 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
private var usernameChanged = false
private var passwordChanged = false
private var saveEnabled = false
private var validPassword = true
private var validUsername = true
@ -90,8 +88,9 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
usernameText . text = args . savedLoginItem . username . toEditable ( )
passwordText . text = args . savedLoginItem . password . toEditable ( )
clearUsernameTextButton . isEnabled = oldLogin . username . isNotEmpty ( )
formatEditableValues ( )
initSaveState ( )
setUpClickListeners ( )
setUpTextListeners ( )
togglePasswordReveal ( passwordText , revealPasswordButton )
@ -101,18 +100,6 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
}
}
private fun initSaveState ( ) {
saveEnabled = false // don't enable saving until something has been changed
val saveButton =
activity ?. findViewById < ActionMenuItemView > ( R . id . save _login _button )
saveButton ?. isEnabled = saveEnabled
usernameChanged = false
passwordChanged = false
clearUsernameTextButton . isEnabled = oldLogin . username . isNotEmpty ( )
}
private fun formatEditableValues ( ) {
hostnameText . isClickable = false
hostnameText . isFocusable = false
@ -263,20 +250,20 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
}
private fun setSaveButtonState ( ) {
val saveButton = activity ?. findViewById < ActionMenuItemView > ( R . id . save _login _button )
val changesMadeWithNoErrors =
validUsername && validPassword && ( usernameChanged || passwordChanged )
changesMadeWithNoErrors . let {
saveButton ?. isEnabled = it
saveEnabled = it
}
activity ?. invalidateOptionsMenu ( )
}
override fun onCreateOptionsMenu ( menu : Menu , inflater : MenuInflater ) {
inflater . inflate ( R . menu . login _save , menu )
}
override fun onPrepareOptionsMenu ( menu : Menu ) {
val saveButton = menu . findItem ( R . id . save _login _button )
val changesMadeWithNoErrors =
validUsername && validPassword && ( usernameChanged || passwordChanged )
saveButton . isEnabled = changesMadeWithNoErrors // don't enable saving until something has been changed
}
override fun onPause ( ) {
redirectToReAuth (
listOf ( R . id . loginDetailFragment ) ,
@ -288,14 +275,12 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
override fun onOptionsItemSelected ( item : MenuItem ) : Boolean = when ( item . itemId ) {
R . id . save _login _button -> {
view ?. hideKeyboard ( )
if ( saveEnabled ) {
interactor . onSaveLogin (
args . savedLoginItem . guid ,
usernameText . text . toString ( ) ,
passwordText . text . toString ( )
)
requireComponents . analytics . metrics . track ( Event . EditLoginSave )
}
interactor . onSaveLogin (
args . savedLoginItem . guid ,
usernameText . text . toString ( ) ,
passwordText . text . toString ( )
)
requireComponents . analytics . metrics . track ( Event . EditLoginSave )
true
}
else -> false