diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt index bb1385e..9dd5ba0 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesListFragment.kt @@ -1,6 +1,7 @@ package gq.kirmanak.mealient.ui.recipes import android.annotation.SuppressLint +import android.content.DialogInterface import android.os.Bundle import android.view.View import androidx.annotation.StringRes @@ -13,6 +14,7 @@ import androidx.paging.LoadState import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.RecyclerView import by.kirich1409.viewbindingdelegate.viewBinding +import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import gq.kirmanak.mealient.R import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity @@ -144,12 +146,28 @@ class RecipesListFragment : Fragment(R.layout.fragment_recipes_list) { private fun onDeleteClick(event: RecipeViewHolder.ClickEvent) { logger.v { "onDeleteClick() called with: event = $event" } - viewModel.onDeleteConfirm(event.recipeSummaryEntity).observe(viewLifecycleOwner) { - logger.d { "onDeleteClick: result is $it" } - if (it.isFailure) { - showLongToast(R.string.fragment_recipes_delete_recipe_failed) + val entity = event.recipeSummaryEntity + val message = getString( + R.string.fragment_recipes_delete_recipe_confirm_dialog_message, entity.name + ) + val onPositiveClick = DialogInterface.OnClickListener { _, _ -> + viewModel.onDeleteConfirm(entity).observe(viewLifecycleOwner) { + logger.d { "onDeleteClick: result is $it" } + if (it.isFailure) { + showLongToast(R.string.fragment_recipes_delete_recipe_failed) + } } } + val positiveBtnResId = R.string.fragment_recipes_delete_recipe_confirm_dialog_positive_btn + val titleResId = R.string.fragment_recipes_delete_recipe_confirm_dialog_title + val negativeBtnResId = R.string.fragment_recipes_delete_recipe_confirm_dialog_negative_btn + MaterialAlertDialogBuilder(requireContext()) + .setTitle(titleResId) + .setMessage(message) + .setPositiveButton(positiveBtnResId, onPositiveClick) + .setNegativeButton(negativeBtnResId) { _, _ -> } + .show() + } private fun onFavoriteClick(event: RecipeViewHolder.ClickEvent) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 648d79a..c3502d5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,6 +51,10 @@ no connection Favorite status update failed Recipe removal failed + Delete recipe + Are you sure you want to delete %1$s? This cannot be undone. + Confirm + Cancel Change URL Search recipes @string/app_name