Implement showing logout menu option

This commit is contained in:
Kirill Kamakin
2021-11-14 10:39:25 +03:00
parent 641106260d
commit 07484113d5
3 changed files with 49 additions and 0 deletions

View File

@@ -1,14 +1,21 @@
package gq.kirmanak.mealie
import android.os.Bundle
import android.view.Menu
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealie.databinding.MainActivityBinding
import gq.kirmanak.mealie.ui.auth.AuthenticationViewModel
import kotlinx.coroutines.flow.collectLatest
import timber.log.Timber
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private lateinit var binding: MainActivityBinding
private val authViewModel by viewModels<AuthenticationViewModel>()
private var isAuthenticated = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -16,5 +23,34 @@ class MainActivity : AppCompatActivity() {
binding = MainActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
listenToAuthStatuses()
}
private fun listenToAuthStatuses() {
Timber.v("listenToAuthStatuses() called")
lifecycleScope.launchWhenCreated {
authViewModel.authenticationStatuses().collectLatest {
changeAuthStatus(it)
}
}
}
private fun changeAuthStatus(it: Boolean) {
Timber.v("changeAuthStatus() called with: it = $it")
if (isAuthenticated == it) return
isAuthenticated = it
invalidateOptionsMenu()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
Timber.v("onCreateOptionsMenu() called with: menu = $menu")
menuInflater.inflate(R.menu.main_toolbar, menu)
return true
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
Timber.v("onPrepareOptionsMenu() called with: menu = $menu")
menu.findItem(R.id.logout).isVisible = isAuthenticated
return true
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/logout"
android:contentDescription="@string/menu_main_toolbar_content_description_logout"
android:title="@string/menu_main_toolbar_logout"
app:showAsAction="never" />
</menu>

View File

@@ -5,4 +5,6 @@
<string name="fragment_authentication_input_hint_url">Url</string>
<string name="fragment_authentication_button_login">Login</string>
<string name="content_description_view_holder_recipe_image">Picture of the cooked meal</string>
<string name="menu_main_toolbar_content_description_logout">"Logout"</string>
<string name="menu_main_toolbar_logout">Logout</string>
</resources>