Implement showing logout menu option
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
11
app/src/main/res/menu/main_toolbar.xml
Normal file
11
app/src/main/res/menu/main_toolbar.xml
Normal 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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user