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
}
}