From e701b5d7df2abce5388e29bb3073cc1a83cf1dbf Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 25 Nov 2021 20:06:53 +0300 Subject: [PATCH] Show recipe info in bottom sheet dialog --- .../ui/recipes/info/RecipeInfoFragment.kt | 28 +++++-------------- .../res/drawable/recipe_info_background.xml | 8 ++++++ .../main/res/layout/fragment_recipe_info.xml | 3 +- app/src/main/res/navigation/nav_graph.xml | 9 ++---- app/src/main/res/values/styles.xml | 17 +++++++++++ 5 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 app/src/main/res/drawable/recipe_info_background.xml diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt index 0a5622f..dd7789e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt @@ -1,40 +1,29 @@ package gq.kirmanak.mealient.ui.recipes.info +import android.app.Dialog import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels -import androidx.lifecycle.Observer -import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.bottomsheet.BottomSheetDialogFragment import dagger.hilt.android.AndroidEntryPoint +import gq.kirmanak.mealient.R import gq.kirmanak.mealient.databinding.FragmentRecipeInfoBinding -import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel import timber.log.Timber @AndroidEntryPoint -class RecipeInfoFragment : Fragment() { +class RecipeInfoFragment : BottomSheetDialogFragment() { private var _binding: FragmentRecipeInfoBinding? = null private val binding: FragmentRecipeInfoBinding get() = checkNotNull(_binding) { "Binding requested when fragment is off screen" } private val arguments by navArgs() private val viewModel by viewModels() - private val authViewModel by viewModels() - private val authStatuses by lazy { authViewModel.authenticationStatuses() } - private val authStatusObserver = Observer { onAuthStatusChange(it) } - private fun onAuthStatusChange(isAuthenticated: Boolean) { - Timber.v("onAuthStatusChange() called with: isAuthenticated = $isAuthenticated") - if (!isAuthenticated) { - authStatuses.removeObserver(authStatusObserver) - navigateToAuthFragment() - } - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -48,7 +37,6 @@ class RecipeInfoFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState") - authStatuses.observe(this, authStatusObserver) viewModel.loadRecipeImage(binding.image, arguments.recipeSlug) viewModel.loadRecipeInfo(arguments.recipeId, arguments.recipeSlug) @@ -71,10 +59,8 @@ class RecipeInfoFragment : Fragment() { (requireActivity() as? AppCompatActivity)?.supportActionBar?.title = null } - private fun navigateToAuthFragment() { - Timber.v("navigateToAuthFragment() called") - findNavController().navigate(RecipeInfoFragmentDirections.actionRecipeInfoFragmentToAuthenticationFragment()) - } + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = + BottomSheetDialog(requireContext(), R.style.NoShapeBottomSheetDialog) override fun onDestroyView() { super.onDestroyView() diff --git a/app/src/main/res/drawable/recipe_info_background.xml b/app/src/main/res/drawable/recipe_info_background.xml new file mode 100644 index 0000000..77b3723 --- /dev/null +++ b/app/src/main/res/drawable/recipe_info_background.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recipe_info.xml b/app/src/main/res/layout/fragment_recipe_info.xml index 2026c3f..5db2632 100644 --- a/app/src/main/res/layout/fragment_recipe_info.xml +++ b/app/src/main/res/layout/fragment_recipe_info.xml @@ -10,10 +10,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - - - - + wrap_content @dimen/margin_small + + + + + + + \ No newline at end of file