From 113660e15c0b907d63bfb958eef4c2bcbf363aef Mon Sep 17 00:00:00 2001 From: malinajirka Date: Thu, 1 Feb 2024 05:21:13 +0100 Subject: [PATCH 1/5] Revert "Implemented the show dialog fragment for variations." This reverts commit e7e651ca19b60d8f346b760e2b25db9d78f50afd. --- .../variations/VariationDetailFragment.kt | 26 +------------------ .../variations/VariationDetailViewModel.kt | 26 +++++++++---------- 2 files changed, 13 insertions(+), 39 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailFragment.kt index ccf61aacef7..20f3f4a9d24 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailFragment.kt @@ -31,8 +31,6 @@ 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 @@ -50,7 +48,6 @@ 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 @@ -64,8 +61,7 @@ class VariationDetailFragment : BaseFragment(R.layout.fragment_variation_detail), BackPressListener, OnGalleryImageInteractionListener, - MenuProvider, - DialogInteractionListener { + MenuProvider { companion object { private const val LIST_STATE_KEY = "list_state" const val KEY_VARIATION_DETAILS_RESULT = "key_variation_details_result" @@ -99,18 +95,11 @@ 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() @@ -287,25 +276,12 @@ 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() diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailViewModel.kt index 8b502da15bd..f3d5941718f 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailViewModel.kt @@ -131,7 +131,18 @@ class VariationDetailViewModel @Inject constructor( fun onDeleteVariationClicked() { triggerEvent( - Event.ShowDialogFragment( + 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) + }, messageId = string.variation_confirm_delete, positiveButtonId = string.delete, negativeButtonId = string.cancel @@ -139,19 +150,6 @@ class VariationDetailViewModel @Inject constructor( ) } - 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() -> { From df916a05044997e507e881f1ee21c1798128c906 Mon Sep 17 00:00:00 2001 From: malinajirka Date: Thu, 1 Feb 2024 05:21:13 +0100 Subject: [PATCH 2/5] Revert "Fixed detekt error." This reverts commit f7dccacea64e001af14b2fbb95d8de766f230bdc. --- .../com/woocommerce/android/viewmodel/MultiLiveEvent.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt index 6bc238d610b..8622d77c3de 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt @@ -142,10 +142,7 @@ open class MultiLiveEvent : MutableLiveData() { val neutralActionName: String? = null, val cancelable: Boolean = true ) : Event() { - fun showIn( - fragmentManager: androidx.fragment.app.FragmentManager, - listener: WooDialogFragment.DialogInteractionListener - ) { + fun showIn(fragmentManager: androidx.fragment.app.FragmentManager, listener: WooDialogFragment.DialogInteractionListener) { val dialogParams = DialogParams( titleId = titleId, messageId = messageId, From 6e23fb353e812d77d83872fb3819e3dc17b0cee1 Mon Sep 17 00:00:00 2001 From: malinajirka Date: Thu, 1 Feb 2024 05:21:13 +0100 Subject: [PATCH 3/5] Revert "Created dialog params for the dialog fragment" This reverts commit 3ed4e859ed5b1886e3862c06c041e54b206d7130. --- .../woocommerce/android/ui/dialog/DialogParams.kt | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/DialogParams.kt diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/DialogParams.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/DialogParams.kt deleted file mode 100644 index e484ec323b0..00000000000 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/DialogParams.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.woocommerce.android.ui.dialog - -import android.os.Parcelable -import androidx.annotation.StringRes -import kotlinx.parcelize.Parcelize - -@Parcelize -data class DialogParams( - @StringRes val titleId: Int? = null, - @StringRes val messageId: Int? = null, - @StringRes val positiveButtonId: Int? = null, - @StringRes val negativeButtonId: Int? = null, - @StringRes val neutralButtonId: Int? = null, - val cancelable: Boolean = true -) : Parcelable From 94e32eec2538d9c678830d604af30f6013172ae5 Mon Sep 17 00:00:00 2001 From: malinajirka Date: Thu, 1 Feb 2024 05:21:13 +0100 Subject: [PATCH 4/5] Revert "Added it to the MultiLiveEvent" This reverts commit 1dc828047f9caeb65087da08727a85f5fb04fc83. --- .../android/viewmodel/MultiLiveEvent.kt | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt index 8622d77c3de..2c8dbcca8d8 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/viewmodel/MultiLiveEvent.kt @@ -12,9 +12,7 @@ import com.google.android.material.snackbar.Snackbar import com.woocommerce.android.R.string import com.woocommerce.android.model.UiString import com.woocommerce.android.support.help.HelpOrigin -import com.woocommerce.android.ui.dialog.DialogParams import com.woocommerce.android.ui.dialog.WooDialog -import com.woocommerce.android.ui.dialog.WooDialogFragment import com.woocommerce.android.viewmodel.MultiLiveEvent.Event import java.util.concurrent.atomic.AtomicBoolean @@ -131,33 +129,6 @@ open class MultiLiveEvent : MutableLiveData() { data class LaunchUrlInChromeTab(val url: String) : Event() - data class ShowDialogFragment( - @StringRes val titleId: Int? = null, - @StringRes val messageId: Int? = null, - @StringRes val positiveButtonId: Int? = null, - @StringRes val negativeButtonId: Int? = null, - @StringRes val neutralButtonId: Int? = null, - val positiveActionName: String? = null, - val negativeActionName: String? = null, - val neutralActionName: String? = null, - val cancelable: Boolean = true - ) : Event() { - fun showIn(fragmentManager: androidx.fragment.app.FragmentManager, listener: WooDialogFragment.DialogInteractionListener) { - val dialogParams = DialogParams( - titleId = titleId, - messageId = messageId, - positiveButtonId = positiveButtonId, - negativeButtonId = negativeButtonId, - neutralButtonId = neutralButtonId, - cancelable = cancelable - ) - val dialogFragment = WooDialogFragment.newInstance(dialogParams).apply { - setDialogInteractionListener(listener) - } - dialogFragment.show(fragmentManager, WooDialogFragment.TAG) - } - } - data class ShowDialog( @StringRes val titleId: Int? = null, @StringRes val messageId: Int? = null, From 6bdba76c76667282f4add6c3930b063fb9bf6433 Mon Sep 17 00:00:00 2001 From: malinajirka Date: Thu, 1 Feb 2024 05:21:14 +0100 Subject: [PATCH 5/5] Revert "Created a dialog fragment that can survive config changes." This reverts commit 217f8d692d9e21dde790ce3bb095310e6b469a16. --- .../android/ui/dialog/WooDialogFragment.kt | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/WooDialogFragment.kt diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/WooDialogFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/WooDialogFragment.kt deleted file mode 100644 index 83dd8d2c247..00000000000 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dialog/WooDialogFragment.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.woocommerce.android.ui.dialog - -import android.app.Dialog -import android.os.Bundle -import androidx.fragment.app.DialogFragment -import com.google.android.material.dialog.MaterialAlertDialogBuilder - -class WooDialogFragment : DialogFragment() { - - private var dialogInteractionListener: DialogInteractionListener? = null - - fun setDialogInteractionListener(listener: DialogInteractionListener) { - dialogInteractionListener = listener - } - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - @Suppress("DEPRECATION") val params = requireArguments().getParcelable(ARG_DIALOG_PARAMS)!! - - val builder = MaterialAlertDialogBuilder(requireContext()) - .setCancelable(params.cancelable) - - params.titleId?.let { builder.setTitle(it) } - params.messageId?.let { builder.setMessage(it) } - params.positiveButtonId?.let { posId -> - builder.setPositiveButton(posId) { _, _ -> - dialogInteractionListener?.onPositiveButtonClicked() - } - } - params.negativeButtonId?.let { negId -> - builder.setNegativeButton(negId) { _, _ -> - dialogInteractionListener?.onNegativeButtonClicked() - } - } - params.neutralButtonId?.let { neutId -> - builder.setNeutralButton(neutId) { _, _ -> - dialogInteractionListener?.onNeutralButtonClicked() - } - } - - return builder.create() - } - - interface DialogInteractionListener { - fun onPositiveButtonClicked() - fun onNegativeButtonClicked() - fun onNeutralButtonClicked() - } - - companion object { - const val ARG_DIALOG_PARAMS = "dialog_params" - const val TAG = "WooDialogFragment" - fun newInstance(params: DialogParams): WooDialogFragment { - return WooDialogFragment().apply { - arguments = Bundle().apply { - putParcelable(ARG_DIALOG_PARAMS, params) - } - } - } - } -}