Fix pressing back on AuthenticationFragment

If login request isn't disabled when user presses
back then they might get navigated back to
authentication again.
This commit is contained in:
Kirill Kamakin
2022-04-04 18:54:48 +05:00
parent e6dbff4a67
commit c98feceab4
7 changed files with 50 additions and 9 deletions

View File

@@ -13,7 +13,8 @@ import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealient.R
import gq.kirmanak.mealient.data.network.NetworkError.Unauthorized
import gq.kirmanak.mealient.databinding.FragmentAuthenticationBinding
import gq.kirmanak.mealient.ui.checkIfInputIsEmpty
import gq.kirmanak.mealient.extensions.checkIfInputIsEmpty
import gq.kirmanak.mealient.extensions.executeOnceOnBackPressed
import timber.log.Timber
@AndroidEntryPoint
@@ -28,6 +29,7 @@ class AuthenticationFragment : Fragment(R.layout.fragment_authentication) {
super.onCreate(savedInstanceState)
Timber.v("onCreate() called with: savedInstanceState = $savedInstanceState")
authStatuses.observe(this, ::onAuthStatusChange)
executeOnceOnBackPressed { viewModel.disableLoginRequest() }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

View File

@@ -45,8 +45,17 @@ class AuthenticationViewModel @Inject constructor(
}
}
fun login() {
Timber.v("login() called")
viewModelScope.launch { loginRequestsFlow.emit(true) }
fun enableLoginRequest() {
Timber.v("enableLoginRequest() called")
updateIsLoginRequested(true)
}
fun disableLoginRequest() {
Timber.v("disableLoginRequest() called")
updateIsLoginRequested(false)
}
private fun updateIsLoginRequested(isRequested: Boolean) {
viewModelScope.launch { loginRequestsFlow.emit(isRequested) }
}
}