Implement showing logout menu option
This commit is contained in:
@@ -1,14 +1,21 @@
|
|||||||
package gq.kirmanak.mealie
|
package gq.kirmanak.mealie
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.Menu
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import gq.kirmanak.mealie.databinding.MainActivityBinding
|
import gq.kirmanak.mealie.databinding.MainActivityBinding
|
||||||
|
import gq.kirmanak.mealie.ui.auth.AuthenticationViewModel
|
||||||
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: MainActivityBinding
|
private lateinit var binding: MainActivityBinding
|
||||||
|
private val authViewModel by viewModels<AuthenticationViewModel>()
|
||||||
|
private var isAuthenticated = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@@ -16,5 +23,34 @@ class MainActivity : AppCompatActivity() {
|
|||||||
binding = MainActivityBinding.inflate(layoutInflater)
|
binding = MainActivityBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setSupportActionBar(binding.toolbar)
|
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_input_hint_url">Url</string>
|
||||||
<string name="fragment_authentication_button_login">Login</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="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>
|
</resources>
|
||||||
Reference in New Issue
Block a user