From 07484113d5c8fdf1eefa39629e63dc66f776f2a2 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sun, 14 Nov 2021 10:39:25 +0300 Subject: [PATCH] Implement showing logout menu option --- .../java/gq/kirmanak/mealie/MainActivity.kt | 36 +++++++++++++++++++ app/src/main/res/menu/main_toolbar.xml | 11 ++++++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 49 insertions(+) create mode 100644 app/src/main/res/menu/main_toolbar.xml diff --git a/app/src/main/java/gq/kirmanak/mealie/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealie/MainActivity.kt index 13551b6..91e76cd 100644 --- a/app/src/main/java/gq/kirmanak/mealie/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealie/MainActivity.kt @@ -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() + 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 } } \ No newline at end of file diff --git a/app/src/main/res/menu/main_toolbar.xml b/app/src/main/res/menu/main_toolbar.xml new file mode 100644 index 0000000..0c27937 --- /dev/null +++ b/app/src/main/res/menu/main_toolbar.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2779f0d..89f07b0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,6 @@ Url Login Picture of the cooked meal + "Logout" + Logout \ No newline at end of file