From e6dbff4a6707e3a4b616294bce8e05e10744371d Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Mon, 4 Apr 2022 18:52:19 +0500 Subject: [PATCH] Fix IllegalStateException when inflating menu --- app/src/main/java/gq/kirmanak/mealient/MainActivity.kt | 10 +++++----- .../mealient/ui/auth/AuthenticationViewModel.kt | 2 -- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/MainActivity.kt index 99a1b54..4d79231 100644 --- a/app/src/main/java/gq/kirmanak/mealient/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/MainActivity.kt @@ -19,8 +19,7 @@ import timber.log.Timber class MainActivity : AppCompatActivity() { private lateinit var binding: MainActivityBinding private val authViewModel by viewModels() - private val authenticationState: AuthenticationState - get() = authViewModel.currentAuthenticationState + private var lastAuthenticationState: AuthenticationState? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -57,14 +56,15 @@ class MainActivity : AppCompatActivity() { private fun onAuthStateUpdate(authState: AuthenticationState) { Timber.v("onAuthStateUpdate() called with: it = $authState") + lastAuthenticationState = authState invalidateOptionsMenu() } override fun onCreateOptionsMenu(menu: Menu): Boolean { Timber.v("onCreateOptionsMenu() called with: menu = $menu") menuInflater.inflate(R.menu.main_toolbar, menu) - menu.findItem(R.id.logout).isVisible = authenticationState == AUTHORIZED - menu.findItem(R.id.login).isVisible = authenticationState == UNAUTHORIZED + menu.findItem(R.id.logout).isVisible = lastAuthenticationState == AUTHORIZED + menu.findItem(R.id.login).isVisible = lastAuthenticationState == UNAUTHORIZED return true } @@ -76,7 +76,7 @@ class MainActivity : AppCompatActivity() { true } R.id.login -> { - authViewModel.login() + authViewModel.enableLoginRequest() true } else -> super.onOptionsItemSelected(item) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationViewModel.kt index a5e0592..cfc3cf8 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/auth/AuthenticationViewModel.kt @@ -19,8 +19,6 @@ class AuthenticationViewModel @Inject constructor( flow = authRepo.isAuthorizedFlow, transform = AuthenticationState::determineState ).asLiveData() - val currentAuthenticationState: AuthenticationState - get() = checkNotNull(authenticationState.value) { "Auth state flow mustn't be null" } fun authenticate(username: String, password: String): LiveData> { Timber.v("authenticate() called with: username = $username, password = $password")