Skip to content

Commit

Permalink
Implemented the show dialog fragment for variations.
Browse files Browse the repository at this point in the history
  • Loading branch information
Joel Dean committed Jan 31, 2024
1 parent f7dccac commit e7e651c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ import com.woocommerce.android.model.VariantOption
import com.woocommerce.android.ui.aztec.AztecEditorFragment
import com.woocommerce.android.ui.base.BaseFragment
import com.woocommerce.android.ui.base.UIMessageResolver
import com.woocommerce.android.ui.dialog.WooDialogFragment
import com.woocommerce.android.ui.dialog.WooDialogFragment.DialogInteractionListener
import com.woocommerce.android.ui.main.MainActivity.Companion.BackPressListener
import com.woocommerce.android.ui.products.BaseProductEditorFragment
import com.woocommerce.android.ui.products.ProductInventoryViewModel.InventoryData
Expand All @@ -48,6 +50,7 @@ import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ExitWithResult
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowActionSnackbar
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowDialog
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowDialogFragment
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowSnackbar
import com.woocommerce.android.widgets.CustomProgressDialog
import com.woocommerce.android.widgets.SkeletonView
Expand All @@ -61,7 +64,8 @@ class VariationDetailFragment :
BaseFragment(R.layout.fragment_variation_detail),
BackPressListener,
OnGalleryImageInteractionListener,
MenuProvider {
MenuProvider,
DialogInteractionListener {
companion object {
private const val LIST_STATE_KEY = "list_state"
const val KEY_VARIATION_DETAILS_RESULT = "key_variation_details_result"
Expand Down Expand Up @@ -95,11 +99,18 @@ class VariationDetailFragment :

_binding = FragmentVariationDetailBinding.bind(view)

reattachDialogInteractionListener()

requireActivity().addMenuProvider(this, viewLifecycleOwner)
initializeViews(savedInstanceState)
initializeViewModel()
}

private fun reattachDialogInteractionListener() {
val dialogFragment = parentFragmentManager.findFragmentByTag(WooDialogFragment.TAG) as? WooDialogFragment
dialogFragment?.setDialogInteractionListener(this)
}

override fun onDestroyView() {
skeletonView.hide()
imageUploadErrorsSnackbar?.dismiss()
Expand Down Expand Up @@ -276,12 +287,25 @@ class VariationDetailFragment :

is ExitWithResult<*> -> navigateBackWithResult(KEY_VARIATION_DETAILS_RESULT, event.data)
is ShowDialog -> event.showDialog()
is ShowDialogFragment -> event.showIn(parentFragmentManager, this)
is Exit -> requireActivity().onBackPressedDispatcher.onBackPressed()
else -> event.isHandled = false
}
}
}

override fun onPositiveButtonClicked() {
viewModel.onDeleteVariationConfirmed()
}

override fun onNegativeButtonClicked() {
viewModel.onDeleteVariationCancelled()
}

override fun onNeutralButtonClicked() {
// no-op
}

private fun showVariationDetails(variation: ProductVariation) {
if (variation.image == null && !viewModel.isUploadingImages()) {
binding.imageGallery.hide()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,25 +131,27 @@ class VariationDetailViewModel @Inject constructor(

fun onDeleteVariationClicked() {
triggerEvent(
Event.ShowDialog(
positiveBtnAction = { _, _ ->
AnalyticsTracker.track(
AnalyticsEvent.PRODUCT_VARIATION_REMOVE_BUTTON_TAPPED,
mapOf(KEY_PRODUCT_ID to viewState.parentProduct?.remoteId)
)
viewState = viewState.copy(isConfirmingDeletion = false)
deleteVariation()
},
negativeBtnAction = { _, _ ->
viewState = viewState.copy(isConfirmingDeletion = false)
},
Event.ShowDialogFragment(
messageId = string.variation_confirm_delete,
positiveButtonId = string.delete,
negativeButtonId = string.cancel
)
)
}

fun onDeleteVariationConfirmed() {
AnalyticsTracker.track(
AnalyticsEvent.PRODUCT_VARIATION_REMOVE_BUTTON_TAPPED,
mapOf(KEY_PRODUCT_ID to viewState.parentProduct?.remoteId)
)
viewState = viewState.copy(isConfirmingDeletion = false)
deleteVariation()
}

fun onDeleteVariationCancelled() {
viewState = viewState.copy(isConfirmingDeletion = false)
}

fun onExit() {
when {
isUploadingImages() -> {
Expand Down

0 comments on commit e7e651c

Please sign in to comment.