From 43cd13934b1e44567fe4d07084773f1a0283ac8b Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 14:32:18 +0300 Subject: [PATCH 01/20] feat(utils): utility function to get optional int from bundle --- .../main/kotlin/com/personalization/utils/BundleUtils.kt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/utils/BundleUtils.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/utils/BundleUtils.kt b/personalization-sdk/src/main/kotlin/com/personalization/utils/BundleUtils.kt new file mode 100644 index 00000000..5a21f5d9 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/utils/BundleUtils.kt @@ -0,0 +1,9 @@ +package com.personalization.utils + +import android.os.Bundle + +object BundleUtils { + fun Bundle.getOptionalInt(key: String): Int? { + return if (containsKey(key)) getInt(key) else null + } +} From 24af4674ab94e89071138105fbde945929f403c2 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 14:33:15 +0300 Subject: [PATCH 02/20] feat(in-app): optional params for alert dialog --- .../api/managers/InAppNotificationManager.kt | 12 +++---- .../impl/InAppNotificationManagerImpl.kt | 18 ++++++----- .../view/component/dialog/AlertDialog.kt | 31 +++++++++---------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt index e82919a9..c819e53f 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt @@ -13,12 +13,12 @@ interface InAppNotificationManager { fun showAlertDialog( title: String, message: String, - imageUrl: String, - buttonPositiveText: String, - buttonNegativeText: String, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + imageUrl: String? = null, + buttonPositiveText: String? = null, + buttonNegativeText: String? = null, + buttonPositiveColor: Int? = null, + buttonNegativeColor: Int? = null, + onPositiveClick: (() -> Unit)? = null ) fun showFullScreenDialog( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 3c5e1c98..59c653bc 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -123,12 +123,12 @@ class InAppNotificationManagerImpl @Inject constructor( override fun showAlertDialog( title: String, message: String, - imageUrl: String, - buttonPositiveText: String, - buttonNegativeText: String, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + imageUrl: String?, + buttonPositiveText: String?, + buttonNegativeText: String?, + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, + onPositiveClick: (() -> Unit)? ) { val dialog = AlertDialog.newInstance( title = title, @@ -137,12 +137,14 @@ class InAppNotificationManagerImpl @Inject constructor( buttonPositiveColor = buttonPositiveColor, buttonNegativeColor = buttonNegativeColor, buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText, + buttonNegativeText = buttonNegativeText ) dialog.setListener( object : NotificationClickListener { - override fun onPositiveClick() = onPositiveClick() + override fun onPositiveClick() { + onPositiveClick?.invoke() + } override fun onNegativeClick() { dialog.dismiss() } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt index 3b572051..06bd8b84 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt @@ -11,6 +11,7 @@ import androidx.fragment.app.DialogFragment import com.personalization.databinding.AlertDialogBinding import com.personalization.ui.animation.button.addPressEffectDeclarative import com.personalization.ui.click.NotificationClickListener +import com.personalization.utils.BundleUtils.getOptionalInt class AlertDialog : DialogFragment() { @@ -66,18 +67,16 @@ class AlertDialog : DialogFragment() { private fun initDeclineButton() { val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY).orEmpty() - val negativeButtonColor = arguments?.getInt(BUTTON_NEGATIVE_COLOR_KEY) + val negativeButtonColor = arguments?.getOptionalInt(BUTTON_NEGATIVE_COLOR_KEY) with(binding) { buttonContainer.apply { - if(buttonText.isEmpty()) { + if (buttonText.isEmpty()) { buttonDeclineContainer.isVisible = false return } buttonDeclineContainer.addPressEffectDeclarative() buttonDecline.text = buttonText - if (negativeButtonColor != null) { - buttonDecline.setBackgroundColor(negativeButtonColor) - } + negativeButtonColor?.let { buttonDecline.setBackgroundColor(it) } buttonDeclineContainer.setOnClickListener { onButtonClick(isPositiveClick = false) } @@ -87,18 +86,16 @@ class AlertDialog : DialogFragment() { private fun initAcceptButton() { val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY).orEmpty() - val positiveButtonColor = arguments?.getInt(BUTTON_POSITIVE_COLOR_KEY) + val positiveButtonColor = arguments?.getOptionalInt(BUTTON_POSITIVE_COLOR_KEY) with(binding) { buttonContainer.apply { - if(buttonText.isEmpty()){ + if (buttonText.isEmpty()) { buttonAcceptContainer.isVisible = false return } buttonAcceptContainer.addPressEffectDeclarative() buttonAccept.text = buttonText - if (positiveButtonColor != null) { - buttonAccept.setBackgroundColor(positiveButtonColor) - } + positiveButtonColor?.let { buttonAccept.setBackgroundColor(it) } buttonAcceptContainer.setOnClickListener { onButtonClick(isPositiveClick = true) } @@ -134,21 +131,21 @@ class AlertDialog : DialogFragment() { fun newInstance( title: String, message: String, - imageUrl: String, - buttonPositiveText: String, - buttonNegativeText: String, - buttonPositiveColor: Int, - buttonNegativeColor: Int, + imageUrl: String?, + buttonPositiveText: String?, + buttonNegativeText: String?, + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, ): AlertDialog { val dialog = AlertDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putInt(BUTTON_POSITIVE_COLOR_KEY, buttonPositiveColor) - putInt(BUTTON_NEGATIVE_COLOR_KEY, buttonNegativeColor) putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } + buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } } dialog.arguments = args return dialog From 0c71b01a3d2017effa89bf257d3062f3bbee8add Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:03:04 +0300 Subject: [PATCH 03/20] feat(in-app): base in-app dialog --- .../view/component/dialog/BaseDialog.kt | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt new file mode 100644 index 00000000..ad505b02 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt @@ -0,0 +1,107 @@ +package com.personalization.inAppNotification.view.component.dialog + +import android.os.Bundle +import android.view.View +import androidx.core.view.isVisible +import androidx.fragment.app.DialogFragment +import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.ui.animation.button.addPressEffectDeclarative +import com.personalization.ui.click.NotificationClickListener +import com.personalization.utils.BundleUtils.getOptionalInt + +abstract class BaseInAppDialog : DialogFragment() { + + protected abstract val container: InAppViewContainer + private var _listener: NotificationClickListener? = null + + var listener: NotificationClickListener? + get() = _listener + set(value) { + _listener = value + } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupDialog() + } + + private fun setupDialog() { + initImage() + initTextBlock() + initAcceptButton() + initDeclineButton() + handleCloseButton() + } + + private fun initImage() { + val imageUrl = arguments?.getString(IMAGE_URL_KEY).orEmpty() + if (imageUrl.isNotBlank()) { + container.backgroundImageView.loadImage(imageUrl) + } else { + container.imageContainer.visibility = View.GONE + } + } + + private fun initTextBlock() { + container.titleTextView.text = arguments?.getString(TITLE_KEY).orEmpty() + container.messageTextView.text = arguments?.getString(MESSAGE_KEY).orEmpty() + } + + private fun initAcceptButton() { + val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY).orEmpty() + val positiveColor = arguments?.getOptionalInt(BUTTON_POSITIVE_COLOR_KEY) + + if (buttonText.isEmpty()) { + container.buttonAcceptContainer.isVisible = false + return + } + + container.buttonAcceptContainer.addPressEffectDeclarative() + container.buttonAccept.text = buttonText + positiveColor?.let { container.buttonAccept.setBackgroundColor(it) } + container.buttonAcceptContainer.setOnClickListener { + onButtonClick(true) + } + } + + private fun initDeclineButton() { + val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY).orEmpty() + val negativeColor = arguments?.getOptionalInt(BUTTON_NEGATIVE_COLOR_KEY) + + if (buttonText.isEmpty()) { + container.buttonDeclineContainer.isVisible = false + return + } + + container.buttonDeclineContainer.addPressEffectDeclarative() + container.buttonDecline.text = buttonText + negativeColor?.let { container.buttonDecline.setBackgroundColor(it) } + container.buttonDeclineContainer.setOnClickListener { + onButtonClick(false) + } + } + + private fun handleCloseButton() { + container.closeButton.addPressEffectDeclarative() + container.closeButton.setOnClickListener { dismiss() } + } + + private fun onButtonClick(isPositiveClick: Boolean) { + when (isPositiveClick) { + true -> listener?.onPositiveClick() + false -> listener?.onNegativeClick() + } + dismiss() + } + + companion object { + const val TITLE_KEY = "TITLE_KEY" + const val MESSAGE_KEY = "MESSAGE_KEY" + const val IMAGE_URL_KEY = "IMAGE_URL_KEY" + const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" + const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" + const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" + const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" + } +} From f6401c423281217546e06e02f1321ba6350289d6 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:07:53 +0300 Subject: [PATCH 04/20] feat(in-app): optional params for top sheet dialog in-app dialog --- .../api/managers/InAppNotificationManager.kt | 12 +- .../impl/InAppNotificationManagerImpl.kt | 14 +- .../view/component/dialog/TopSheetDialog.kt | 136 ++++-------------- 3 files changed, 39 insertions(+), 123 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt index c819e53f..154c2a57 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt @@ -46,12 +46,12 @@ interface InAppNotificationManager { fun showTopSheetDialog( title: String, message: String, - imageUrl: String?, - buttonPositiveText: String, - buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + imageUrl: String? = null, + buttonPositiveText: String? = null, + buttonNegativeText: String? = null, + buttonPositiveColor: Int? = null, + buttonNegativeColor: Int? = null, + onPositiveClick: (() -> Unit)? = null ) fun showSnackBar( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 59c653bc..b15d7ee5 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -231,11 +231,11 @@ class InAppNotificationManagerImpl @Inject constructor( title: String, message: String, imageUrl: String?, - buttonPositiveText: String, + buttonPositiveText: String?, buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, + onPositiveClick: (() -> Unit)? ) { val dialog = TopSheetDialog.newInstance( title = title, @@ -247,9 +247,11 @@ class InAppNotificationManagerImpl @Inject constructor( buttonNegativeText = buttonNegativeText, ) - dialog.setListener( + dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() = onPositiveClick() + override fun onPositiveClick() { + onPositiveClick?.invoke() + } override fun onNegativeClick() { dialog.dismiss() } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt index d5a0b135..cb76c00f 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt @@ -9,31 +9,30 @@ import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.view.isVisible -import androidx.fragment.app.DialogFragment import com.personalization.databinding.TopSheetDialogBinding -import com.personalization.ui.animation.button.addPressEffectDeclarative -import com.personalization.ui.click.NotificationClickListener +import com.personalization.inAppNotification.view.component.container.InAppViewContainer -const val AMOUNT = 0.5f -const val TITLE_KEY = "TITLE_KEY" -const val IMAGE_URL_KEY = "IMAGE_URL_KEY" -const val MESSAGE_KEY = "MESSAGE_KEY" -const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" -const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" -const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" -const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" +class TopSheetDialog : BaseInAppDialog() { -class TopSheetDialog : DialogFragment() { - - private var listener: NotificationClickListener? = null + private var _binding: TopSheetDialogBinding? = null + private val binding get() = _binding!! - fun setListener(listener: NotificationClickListener) { - this.listener = listener + class TopSheetViewContainer(binding: TopSheetDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton } - private var _binding: TopSheetDialogBinding? = null - private val binding get() = _binding!! + + override val container: InAppViewContainer by lazy { + TopSheetViewContainer(binding) + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -48,122 +47,37 @@ class TopSheetDialog : DialogFragment() { _binding = null } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - initImage() - initTextBlock() - initAcceptButton() - initDeclineButton() - handleClosingButton() - } - override fun onStart() { super.onStart() dialog?.window?.apply { setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) setGravity(Gravity.TOP) setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - setDimAmount(AMOUNT) - } - } - - private fun initImage() { - val imageUrl = arguments?.getString(IMAGE_URL_KEY).orEmpty() - if (imageUrl.isNotBlank()) { - binding.backgroundImageView.loadImage(imageUrl) - } else { - binding.imageContainer.isVisible = false - } - } - - private fun initTextBlock() { - with(binding) { - textContainer.apply { - title.text = arguments?.getString(TITLE_KEY).orEmpty() - message.text = arguments?.getString(MESSAGE_KEY).orEmpty() - } - } - } - - private fun initAcceptButton() { - val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY) ?: "" - val positiveButtonColor = arguments?.getInt(BUTTON_POSITIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonAcceptContainer.isVisible = false - return - } - buttonAcceptContainer.addPressEffectDeclarative() - buttonAccept.text = buttonText - if (positiveButtonColor != null) { - buttonAccept.setBackgroundColor(positiveButtonColor) - } - buttonAcceptContainer.setOnClickListener { - onButtonClick(isPositiveClick = true) - } - } - } - } - - private fun initDeclineButton() { - val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY) ?: "" - val negativeButtonColor = arguments?.getInt(BUTTON_NEGATIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonDeclineContainer.isVisible = false - return - } - buttonDeclineContainer.addPressEffectDeclarative() - buttonDecline.text = buttonText - if (negativeButtonColor != null) { - buttonDecline.setBackgroundColor(negativeButtonColor) - } - buttonDeclineContainer.setOnClickListener { - onButtonClick(isPositiveClick = false) - } - } - } - } - - private fun handleClosingButton() { - with(binding) { - closeButton.addPressEffectDeclarative() - closeButton.setOnClickListener { dismiss() } + setDimAmount(0.5f) } } - private fun onButtonClick(isPositiveClick: Boolean) { - when (isPositiveClick) { - true -> listener?.onPositiveClick() - else -> listener?.onNegativeClick() - } - dismiss() - } - companion object { const val TAG = "TopSheetDialog" - + fun newInstance( title: String, message: String, imageUrl: String?, - buttonPositiveText: String, + buttonPositiveText: String?, buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, ): TopSheetDialog { val dialog = TopSheetDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putInt(BUTTON_POSITIVE_COLOR_KEY, buttonPositiveColor) - putInt(BUTTON_NEGATIVE_COLOR_KEY, buttonNegativeColor) putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } + buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } } dialog.arguments = args return dialog From d81a99651d47f891021a5e120129e81bb77b0b61 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:08:31 +0300 Subject: [PATCH 05/20] feat(in-app): base in app container --- .../component/container/InAppViewContainer.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt new file mode 100644 index 00000000..77888b4f --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt @@ -0,0 +1,18 @@ +package com.personalization.inAppNotification.view.component.container + +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import com.personalization.inAppNotification.view.component.image.ImageView + +interface InAppViewContainer { + val backgroundImageView: ImageView + val imageContainer: ViewGroup + val titleTextView: TextView + val messageTextView: TextView + val buttonAcceptContainer: ViewGroup + val buttonAccept: TextView + val buttonDeclineContainer: ViewGroup + val buttonDecline: TextView + val closeButton: View +} From 0b8f6db592ed4221fb7d8514bb0c40faa9eee418 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:09:03 +0300 Subject: [PATCH 06/20] feat(in-app): optional params for bottom sheet dialog --- .../api/managers/InAppNotificationManager.kt | 12 ++-- .../impl/InAppNotificationManagerImpl.kt | 12 ++-- .../component/dialog/BottomSheetDialog.kt | 65 +++++++++---------- 3 files changed, 44 insertions(+), 45 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt index 154c2a57..04ca4f5e 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt @@ -35,12 +35,12 @@ interface InAppNotificationManager { fun showBottomSheetDialog( title: String, message: String, - imageUrl: String?, - buttonPositiveText: String, - buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + imageUrl: String? = null, + buttonPositiveText: String? = null, + buttonNegativeText: String? = null, + buttonPositiveColor: Int? = null, + buttonNegativeColor: Int? = null, + onPositiveClick: (() -> Unit)? = null ) fun showTopSheetDialog( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index b15d7ee5..1a886646 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -196,11 +196,11 @@ class InAppNotificationManagerImpl @Inject constructor( title: String, message: String, imageUrl: String?, - buttonPositiveText: String, + buttonPositiveText: String?, buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - onPositiveClick: () -> Unit + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, + onPositiveClick: (() -> Unit)? ) { val dialog = BottomSheetDialog.newInstance( title = title, @@ -214,7 +214,9 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.setListener( object : NotificationClickListener { - override fun onPositiveClick() = onPositiveClick() + override fun onPositiveClick() { + onPositiveClick?.invoke() + } override fun onNegativeClick() { dialog.dismiss() } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt index cd96fefa..cc5ff8f8 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt @@ -14,6 +14,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.personalization.databinding.BottomSheetDialogBinding import com.personalization.ui.animation.button.addPressEffectDeclarative import com.personalization.ui.click.NotificationClickListener +import com.personalization.utils.BundleUtils.getOptionalInt class BottomSheetDialog : BottomSheetDialogFragment() { @@ -73,43 +74,39 @@ class BottomSheetDialog : BottomSheetDialogFragment() { } } - private fun initAcceptButton() { - val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY)?:"" - val positiveButtonColor = arguments?.getInt(BUTTON_POSITIVE_COLOR_KEY) + private fun initDeclineButton() { + val buttonText = arguments?.getString(AlertDialog.Companion.BUTTON_NEGATIVE_TEXT_KEY).orEmpty() + val negativeButtonColor = arguments?.getOptionalInt(AlertDialog.Companion.BUTTON_NEGATIVE_COLOR_KEY) with(binding) { buttonContainer.apply { - if(buttonText.isEmpty()) { - buttonAcceptContainer.isVisible = false + if (buttonText.isEmpty()) { + buttonDeclineContainer.isVisible = false return } - buttonAcceptContainer.addPressEffectDeclarative() - buttonAccept.text = buttonText - if (positiveButtonColor != null) { - buttonAccept.setBackgroundColor(positiveButtonColor) - } - buttonAcceptContainer.setOnClickListener { - onButtonClick(isPositiveClick = true) + buttonDeclineContainer.addPressEffectDeclarative() + buttonDecline.text = buttonText + negativeButtonColor?.let { buttonDecline.setBackgroundColor(it) } + buttonDeclineContainer.setOnClickListener { + onButtonClick(isPositiveClick = false) } } } } - private fun initDeclineButton() { - val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY)?:"" - val negativeButtonColor = arguments?.getInt(BUTTON_NEGATIVE_COLOR_KEY) + private fun initAcceptButton() { + val buttonText = arguments?.getString(AlertDialog.Companion.BUTTON_POSITIVE_TEXT_KEY).orEmpty() + val positiveButtonColor = arguments?.getOptionalInt(AlertDialog.Companion.BUTTON_POSITIVE_COLOR_KEY) with(binding) { buttonContainer.apply { - if(buttonText.isEmpty()) { - buttonDeclineContainer.isVisible = false + if (buttonText.isEmpty()) { + buttonAcceptContainer.isVisible = false return } - buttonDeclineContainer.addPressEffectDeclarative() - buttonDecline.text = buttonText - if (negativeButtonColor != null) { - buttonDecline.setBackgroundColor(negativeButtonColor) - } - buttonDeclineContainer.setOnClickListener { - onButtonClick(isPositiveClick = false) + buttonAcceptContainer.addPressEffectDeclarative() + buttonAccept.text = buttonText + positiveButtonColor?.let { buttonAccept.setBackgroundColor(it) } + buttonAcceptContainer.setOnClickListener { + onButtonClick(isPositiveClick = true) } } } @@ -144,20 +141,20 @@ class BottomSheetDialog : BottomSheetDialogFragment() { title: String, message: String, imageUrl: String?, - buttonPositiveText: String, + buttonPositiveText: String?, buttonNegativeText: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, ): BottomSheetDialog { val dialog = BottomSheetDialog() val args = Bundle().apply { - putString(TITLE_KEY, title) - putString(MESSAGE_KEY, message) - putString(IMAGE_URL_KEY, imageUrl) - putInt(BUTTON_POSITIVE_COLOR_KEY, buttonPositiveColor) - putInt(BUTTON_NEGATIVE_COLOR_KEY, buttonNegativeColor) - putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + putString(AlertDialog.Companion.TITLE_KEY, title) + putString(AlertDialog.Companion.MESSAGE_KEY, message) + putString(AlertDialog.Companion.IMAGE_URL_KEY, imageUrl) + putString(AlertDialog.Companion.BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) + putString(AlertDialog.Companion.BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + buttonPositiveColor?.let { putInt(AlertDialog.Companion.BUTTON_POSITIVE_COLOR_KEY, it) } + buttonNegativeColor?.let { putInt(AlertDialog.Companion.BUTTON_NEGATIVE_COLOR_KEY, it) } } dialog.arguments = args return dialog From b0856bcd7bd9977b75e889a4a231e7f1d3ebf0b7 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:23:56 +0300 Subject: [PATCH 07/20] fix(in-app): top dialog image paddings --- personalization-sdk/src/main/res/layout/top_sheet_dialog.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/personalization-sdk/src/main/res/layout/top_sheet_dialog.xml b/personalization-sdk/src/main/res/layout/top_sheet_dialog.xml index 4f89318f..91e7aa1e 100644 --- a/personalization-sdk/src/main/res/layout/top_sheet_dialog.xml +++ b/personalization-sdk/src/main/res/layout/top_sheet_dialog.xml @@ -11,8 +11,9 @@ android:layout_height="wrap_content" android:layout_gravity="top" app:cardElevation="8dp" - android:layout_marginBottom="8dp" app:cardBackgroundColor="@color/white" + app:cardPreventCornerOverlap="false" + app:useCompatPadding="false" app:shapeAppearanceOverlay="@style/custom_bottom_corners"> Date: Mon, 28 Apr 2025 16:34:57 +0300 Subject: [PATCH 08/20] feat(in-app): alert dialog with base in-app dialog --- .../view/component/dialog/AlertDialog.kt | 118 ++++-------------- 1 file changed, 27 insertions(+), 91 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt index 06bd8b84..6c888c66 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt @@ -3,26 +3,42 @@ package com.personalization.inAppNotification.view.component.dialog import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.view.isVisible -import androidx.fragment.app.DialogFragment import com.personalization.databinding.AlertDialogBinding -import com.personalization.ui.animation.button.addPressEffectDeclarative -import com.personalization.ui.click.NotificationClickListener -import com.personalization.utils.BundleUtils.getOptionalInt +import com.personalization.inAppNotification.view.component.container.InAppViewContainer -class AlertDialog : DialogFragment() { +class AlertDialog : BaseInAppDialog() { - private var listener: NotificationClickListener? = null + private var _binding: AlertDialogBinding? = null + private val binding get() = _binding!! - fun setListener(listener: NotificationClickListener) { - this.listener = listener + class AlertDialogViewContainer(binding: AlertDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton } - private var _binding: AlertDialogBinding? = null - private val binding get() = _binding!! + override val container: InAppViewContainer by lazy { + AlertDialogViewContainer(binding) + } + + override fun onStart() { + super.onStart() + dialog?.window?.apply { + setGravity(Gravity.CENTER) + setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + setDimAmount(0.5f) + } + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -37,86 +53,6 @@ class AlertDialog : DialogFragment() { _binding = null } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - initImage() - initTextBlock() - initAcceptButton() - initDeclineButton() - handleClosingButton() - } - - private fun initTextBlock() { - with(binding) { - textContainer.apply { - title.text = arguments?.getString(TITLE_KEY).orEmpty() - message.text = arguments?.getString(MESSAGE_KEY).orEmpty() - } - } - } - - private fun initImage() { - val imageUrl = arguments?.getString(IMAGE_URL_KEY).orEmpty() - if (imageUrl.isNotBlank()) { - binding.backgroundImageView.loadImage(imageUrl) - } else { - binding.imageContainer.isVisible = false - } - } - - private fun initDeclineButton() { - val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY).orEmpty() - val negativeButtonColor = arguments?.getOptionalInt(BUTTON_NEGATIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonDeclineContainer.isVisible = false - return - } - buttonDeclineContainer.addPressEffectDeclarative() - buttonDecline.text = buttonText - negativeButtonColor?.let { buttonDecline.setBackgroundColor(it) } - buttonDeclineContainer.setOnClickListener { - onButtonClick(isPositiveClick = false) - } - } - } - } - - private fun initAcceptButton() { - val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY).orEmpty() - val positiveButtonColor = arguments?.getOptionalInt(BUTTON_POSITIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonAcceptContainer.isVisible = false - return - } - buttonAcceptContainer.addPressEffectDeclarative() - buttonAccept.text = buttonText - positiveButtonColor?.let { buttonAccept.setBackgroundColor(it) } - buttonAcceptContainer.setOnClickListener { - onButtonClick(isPositiveClick = true) - } - } - } - } - - private fun handleClosingButton() { - with(binding) { - closeButton.addPressEffectDeclarative() - closeButton.setOnClickListener { dismiss() } - } - } - - private fun onButtonClick(isPositiveClick: Boolean) { - when (isPositiveClick) { - true -> listener?.onPositiveClick() - else -> listener?.onNegativeClick() - } - dismiss() - } companion object { const val TAG = "AlertDialog" From 76eb8a331f1c653c4e320eecf862afadad5eb9f1 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:38:23 +0300 Subject: [PATCH 09/20] feat(in-app): bottom sheet dialog with base in-app dialog --- .../component/dialog/BottomSheetDialog.kt | 141 ++++-------------- 1 file changed, 33 insertions(+), 108 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt index cc5ff8f8..814fc478 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt @@ -2,30 +2,39 @@ package com.personalization.inAppNotification.view.component.dialog -import android.content.res.ColorStateList import android.graphics.Color -import android.graphics.PorterDuff +import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.view.isVisible -import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.personalization.databinding.BottomSheetDialogBinding +import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.ui.animation.button.addPressEffectDeclarative import com.personalization.ui.click.NotificationClickListener import com.personalization.utils.BundleUtils.getOptionalInt -class BottomSheetDialog : BottomSheetDialogFragment() { +class BottomSheetDialog : BaseInAppDialog() { - private var listener: NotificationClickListener? = null + private var _binding: BottomSheetDialogBinding? = null + private val binding get() = _binding!! - fun setListener(listener: NotificationClickListener) { - this.listener = listener + class BottomSheetViewContainer(binding: BottomSheetDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton } - private var _binding: BottomSheetDialogBinding? = null - private val binding get() = _binding!! + override val container: InAppViewContainer by lazy { + BottomSheetViewContainer(binding) + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -40,102 +49,18 @@ class BottomSheetDialog : BottomSheetDialogFragment() { _binding = null } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - initImage() - initTextBlock() - initAcceptButton() - initDeclineButton() - handleClosingButton() - - (view.parent as View).apply { - backgroundTintMode = PorterDuff.Mode.CLEAR - backgroundTintList = ColorStateList.valueOf(Color.TRANSPARENT) - setBackgroundColor(Color.TRANSPARENT) - } - } - - private fun initImage() { - val imageUrl = arguments?.getString(IMAGE_URL_KEY).orEmpty() - if (imageUrl.isNotBlank()) { - binding.backgroundImageView.loadImage(imageUrl) - } else { - binding.imageContainer.isVisible = false - } - } - - private fun initTextBlock() { - with(binding) { - textContainer.apply { - title.text = arguments?.getString(TITLE_KEY).orEmpty() - message.text = arguments?.getString(MESSAGE_KEY).orEmpty() - } - } - } - - private fun initDeclineButton() { - val buttonText = arguments?.getString(AlertDialog.Companion.BUTTON_NEGATIVE_TEXT_KEY).orEmpty() - val negativeButtonColor = arguments?.getOptionalInt(AlertDialog.Companion.BUTTON_NEGATIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonDeclineContainer.isVisible = false - return - } - buttonDeclineContainer.addPressEffectDeclarative() - buttonDecline.text = buttonText - negativeButtonColor?.let { buttonDecline.setBackgroundColor(it) } - buttonDeclineContainer.setOnClickListener { - onButtonClick(isPositiveClick = false) - } - } - } - } - - private fun initAcceptButton() { - val buttonText = arguments?.getString(AlertDialog.Companion.BUTTON_POSITIVE_TEXT_KEY).orEmpty() - val positiveButtonColor = arguments?.getOptionalInt(AlertDialog.Companion.BUTTON_POSITIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - if (buttonText.isEmpty()) { - buttonAcceptContainer.isVisible = false - return - } - buttonAcceptContainer.addPressEffectDeclarative() - buttonAccept.text = buttonText - positiveButtonColor?.let { buttonAccept.setBackgroundColor(it) } - buttonAcceptContainer.setOnClickListener { - onButtonClick(isPositiveClick = true) - } - } - } - } - - private fun handleClosingButton() { - with(binding) { - closeButton.addPressEffectDeclarative() - closeButton.setOnClickListener { dismiss() } - } - } - - private fun onButtonClick(isPositiveClick: Boolean) { - when (isPositiveClick) { - true -> listener?.onPositiveClick() - else -> listener?.onNegativeClick() + override fun onStart() { + super.onStart() + dialog?.window?.apply { + setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + setGravity(Gravity.BOTTOM) + setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + setDimAmount(0.5f) } - dismiss() } companion object { const val TAG = "BottomSheetDialog" - const val TITLE_KEY = "TITLE_KEY" - const val IMAGE_URL_KEY = "IMAGE_URL_KEY" - const val MESSAGE_KEY = "MESSAGE_KEY" - const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" - const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" - const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" - const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" fun newInstance( title: String, @@ -148,13 +73,13 @@ class BottomSheetDialog : BottomSheetDialogFragment() { ): BottomSheetDialog { val dialog = BottomSheetDialog() val args = Bundle().apply { - putString(AlertDialog.Companion.TITLE_KEY, title) - putString(AlertDialog.Companion.MESSAGE_KEY, message) - putString(AlertDialog.Companion.IMAGE_URL_KEY, imageUrl) - putString(AlertDialog.Companion.BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(AlertDialog.Companion.BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) - buttonPositiveColor?.let { putInt(AlertDialog.Companion.BUTTON_POSITIVE_COLOR_KEY, it) } - buttonNegativeColor?.let { putInt(AlertDialog.Companion.BUTTON_NEGATIVE_COLOR_KEY, it) } + putString(TITLE_KEY, title) + putString(MESSAGE_KEY, message) + putString(IMAGE_URL_KEY, imageUrl) + putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) + putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } + buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } } dialog.arguments = args return dialog From 51da9fa16615793ccf9353212eafc3e7f3958c03 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:49:38 +0300 Subject: [PATCH 10/20] feat(in-app): use consts for in-app --- .../impl/InAppNotificationManagerImpl.kt | 13 ++++++++----- .../view/component/dialog/AlertDialog.kt | 18 +++++++++--------- .../view/component/dialog/BaseDialog.kt | 17 +++++++---------- .../view/component/dialog/BottomSheetDialog.kt | 14 +++++++++----- .../view/component/dialog/TopSheetDialog.kt | 11 +++++++++-- .../view/component/utils/InAppConst.kt | 11 +++++++++++ 6 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 1a886646..9091842f 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -14,9 +14,12 @@ import androidx.fragment.app.FragmentManager import com.personalization.R import com.personalization.api.managers.InAppNotificationManager import com.personalization.errors.EmptyFieldError +import com.personalization.inAppNotification.view.component.dialog.ALERT_DIALOG_TAG import com.personalization.inAppNotification.view.component.dialog.AlertDialog +import com.personalization.inAppNotification.view.component.dialog.BOTTOM_SHEET_TAG import com.personalization.inAppNotification.view.component.dialog.BottomSheetDialog import com.personalization.inAppNotification.view.component.dialog.FullScreenDialog +import com.personalization.inAppNotification.view.component.dialog.TOP_SHEET_DIALOG import com.personalization.inAppNotification.view.component.dialog.TopSheetDialog import com.personalization.inAppNotification.view.component.snackbar.Snackbar import com.personalization.sdk.data.models.dto.popUp.DialogDataDto @@ -140,7 +143,7 @@ class InAppNotificationManagerImpl @Inject constructor( buttonNegativeText = buttonNegativeText ) - dialog.setListener( + dialog.listener = ( object : NotificationClickListener { override fun onPositiveClick() { onPositiveClick?.invoke() @@ -153,7 +156,7 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.show( /* manager = */ fragmentManager, - /* tag = */ AlertDialog.TAG + /* tag = */ ALERT_DIALOG_TAG ) } @@ -212,7 +215,7 @@ class InAppNotificationManagerImpl @Inject constructor( buttonNegativeText = buttonNegativeText, ) - dialog.setListener( + dialog.listener = ( object : NotificationClickListener { override fun onPositiveClick() { onPositiveClick?.invoke() @@ -225,7 +228,7 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.show( /* manager = */ fragmentManager, - /* tag = */ BottomSheetDialog.TAG + /* tag = */ BOTTOM_SHEET_TAG ) } @@ -262,7 +265,7 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.show( /* manager = */ fragmentManager, - /* tag = */ TopSheetDialog.TAG + /* tag = */ TOP_SHEET_DIALOG ) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt index 6c888c66..8d863ddb 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt @@ -9,6 +9,15 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.AlertDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY + +const val ALERT_DIALOG_TAG = "AlertDialog" class AlertDialog : BaseInAppDialog() { @@ -55,15 +64,6 @@ class AlertDialog : BaseInAppDialog() { companion object { - const val TAG = "AlertDialog" - const val TITLE_KEY = "TITLE_KEY" - const val MESSAGE_KEY = "MESSAGE_KEY" - const val IMAGE_URL_KEY = "IMAGE_URL_KEY" - const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" - const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" - const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" - const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" - fun newInstance( title: String, message: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt index ad505b02..37264f9e 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt @@ -5,6 +5,13 @@ import android.view.View import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY import com.personalization.ui.animation.button.addPressEffectDeclarative import com.personalization.ui.click.NotificationClickListener import com.personalization.utils.BundleUtils.getOptionalInt @@ -94,14 +101,4 @@ abstract class BaseInAppDialog : DialogFragment() { } dismiss() } - - companion object { - const val TITLE_KEY = "TITLE_KEY" - const val MESSAGE_KEY = "MESSAGE_KEY" - const val IMAGE_URL_KEY = "IMAGE_URL_KEY" - const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" - const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" - const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" - const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" - } } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt index 814fc478..e2a4dae9 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt @@ -11,9 +11,15 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.BottomSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer -import com.personalization.ui.animation.button.addPressEffectDeclarative -import com.personalization.ui.click.NotificationClickListener -import com.personalization.utils.BundleUtils.getOptionalInt +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY + +const val BOTTOM_SHEET_TAG = "BottomSheetDialog" class BottomSheetDialog : BaseInAppDialog() { @@ -60,8 +66,6 @@ class BottomSheetDialog : BaseInAppDialog() { } companion object { - const val TAG = "BottomSheetDialog" - fun newInstance( title: String, message: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt index cb76c00f..032446d8 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt @@ -11,6 +11,15 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.TopSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY + +const val TOP_SHEET_DIALOG = "TopSheetDialog" class TopSheetDialog : BaseInAppDialog() { @@ -58,8 +67,6 @@ class TopSheetDialog : BaseInAppDialog() { } companion object { - const val TAG = "TopSheetDialog" - fun newInstance( title: String, message: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt new file mode 100644 index 00000000..72e4b484 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt @@ -0,0 +1,11 @@ +package com.personalization.inAppNotification.view.component.utils + +object InAppConsts { + const val TITLE_KEY = "TITLE_KEY" + const val MESSAGE_KEY = "MESSAGE_KEY" + const val IMAGE_URL_KEY = "IMAGE_URL_KEY" + const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" + const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" + const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" + const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" +} From 58e42e74a650f26bf46330eaaf90cb17457972a6 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:50:56 +0300 Subject: [PATCH 11/20] chore(in-app): rename base dialog file --- .../view/component/dialog/{BaseDialog.kt => BaseInAppDialog.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/{BaseDialog.kt => BaseInAppDialog.kt} (100%) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt similarity index 100% rename from personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseDialog.kt rename to personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt From bef7f48c2028868dec4e4bf31304c4097f59e562 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 16:57:11 +0300 Subject: [PATCH 12/20] feat(in-app): use base in-app for full screen dialog --- .../impl/InAppNotificationManagerImpl.kt | 4 +- .../view/component/dialog/FullScreenDialog.kt | 144 +++++------------- .../main/res/layout/full_screen_dialog.xml | 1 + 3 files changed, 39 insertions(+), 110 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 9091842f..91cbe20b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -180,7 +180,7 @@ class InAppNotificationManagerImpl @Inject constructor( buttonNegativeText = buttonNegativeText, ) - dialog.setListener( + dialog.listener = ( object : NotificationClickListener { override fun onPositiveClick() = onPositiveClick() override fun onNegativeClick() { @@ -191,7 +191,7 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.show( /* manager = */ fragmentManager, - /* tag = */ FullScreenDialog.TAG + /* tag = */ FULL_SCREEN_DIALOG_TAG ) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt index 27ad6fae..2de59f70 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt @@ -1,144 +1,72 @@ package com.personalization.inAppNotification.view.component.dialog -import android.graphics.Color -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.WindowManager -import androidx.fragment.app.DialogFragment import com.personalization.databinding.FullScreenDialogBinding -import com.personalization.ui.animation.button.addPressEffectDeclarative -import com.personalization.ui.click.NotificationClickListener - -class FullScreenDialog : DialogFragment() { - - private val binding: FullScreenDialogBinding by lazy { - FullScreenDialogBinding.inflate(layoutInflater) +import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY + +class FullScreenDialog : BaseInAppDialog() { + + private var _binding: FullScreenDialogBinding? = null + private val binding get() = _binding!! + + class FullScreenDialogViewContainer(binding: FullScreenDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton } - private var listener: NotificationClickListener? = null - - fun setListener(listener: NotificationClickListener) { - this.listener = listener + override val container: InAppViewContainer by lazy { + FullScreenDialogViewContainer(binding) } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { + _binding = FullScreenDialogBinding.inflate(inflater, container, false) return binding.root } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - dialog?.window?.apply { - setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - setLayout( - WindowManager.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.MATCH_PARENT - ) - } - - initImage() - initTextBlock() - initAcceptButton() - initDeclineButton() - handleClosingButton() - } - - private fun initTextBlock() { - with(binding) { - textContainer.apply { - title.text = arguments?.getString(TITLE_KEY).orEmpty() - message.text = arguments?.getString(MESSAGE_KEY).orEmpty() - } - } - } - - private fun initImage() { - val imageUrl = arguments?.getString(IMAGE_URL_KEY).orEmpty() - if (imageUrl.isNotBlank()) { - binding.backgroundImageView.loadImage(imageUrl) - } - } - - private fun initDeclineButton() { - val negativeButtonColor = arguments?.getInt(BUTTON_NEGATIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - buttonDeclineContainer.addPressEffectDeclarative() - buttonDecline.text = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY).orEmpty() - if (negativeButtonColor != null) { - buttonDecline.setBackgroundColor(negativeButtonColor) - } - buttonDeclineContainer.setOnClickListener { - onButtonClick(isPositiveClick = false) - } - } - } - } - - private fun initAcceptButton() { - val positiveButtonColor = arguments?.getInt(BUTTON_POSITIVE_COLOR_KEY) - with(binding) { - buttonContainer.apply { - buttonAcceptContainer.addPressEffectDeclarative() - buttonAccept.text = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY).orEmpty() - if (positiveButtonColor != null) { - buttonAccept.setBackgroundColor(positiveButtonColor) - } - buttonAcceptContainer.setOnClickListener { - onButtonClick(isPositiveClick = true) - } - } - } - } - - private fun handleClosingButton() { - with(binding) { - closeButton.addPressEffectDeclarative() - closeButton.setOnClickListener { dismiss() } - } - } - - private fun onButtonClick(isPositiveClick: Boolean) { - when (isPositiveClick) { - true -> listener?.onPositiveClick() - else -> listener?.onNegativeClick() - } - dismiss() + override fun onDestroyView() { + super.onDestroyView() + _binding = null } companion object { - const val TAG = "FullScreenDialog" - const val TITLE_KEY = "TITLE_KEY" - const val MESSAGE_KEY = "MESSAGE_KEY" - const val IMAGE_URL_KEY = "IMAGE_URL_KEY" - const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" - const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" - const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" - const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" - fun newInstance( title: String, message: String, imageUrl: String?, - buttonPositiveText: String, - buttonNegativeText: String, - buttonPositiveColor: Int, - buttonNegativeColor: Int, + buttonPositiveText: String?, + buttonNegativeText: String?, + buttonPositiveColor: Int?, + buttonNegativeColor: Int? ): FullScreenDialog { val dialog = FullScreenDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putInt(BUTTON_POSITIVE_COLOR_KEY, buttonPositiveColor) - putInt(BUTTON_NEGATIVE_COLOR_KEY, buttonNegativeColor) putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) + buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } + buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } } dialog.arguments = args return dialog diff --git a/personalization-sdk/src/main/res/layout/full_screen_dialog.xml b/personalization-sdk/src/main/res/layout/full_screen_dialog.xml index d67119c4..927ad251 100644 --- a/personalization-sdk/src/main/res/layout/full_screen_dialog.xml +++ b/personalization-sdk/src/main/res/layout/full_screen_dialog.xml @@ -10,6 +10,7 @@ android:orientation="vertical"> From 9e01c220ea7c848ea48feb58ff2e107adf55adb5 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 17:02:03 +0300 Subject: [PATCH 13/20] feat(in-app): make params optional for full screen dialog --- .../api/managers/InAppNotificationManager.kt | 12 ++++++------ .../impl/InAppNotificationManagerImpl.kt | 14 ++++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt index 04ca4f5e..fb2c9bf3 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt @@ -24,12 +24,12 @@ interface InAppNotificationManager { fun showFullScreenDialog( title: String, message: String, - imageUrl: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - buttonPositiveText: String, - buttonNegativeText: String, - onPositiveClick: () -> Unit + imageUrl: String? = null, + buttonPositiveText: String? = null, + buttonNegativeText: String? = null, + buttonPositiveColor: Int? = null, + buttonNegativeColor: Int? = null, + onPositiveClick: (() -> Unit)? = null ) fun showBottomSheetDialog( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 91cbe20b..7fdfa394 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -164,11 +164,11 @@ class InAppNotificationManagerImpl @Inject constructor( title: String, message: String, imageUrl: String?, - buttonPositiveColor: Int, - buttonNegativeColor: Int, - buttonPositiveText: String, - buttonNegativeText: String, - onPositiveClick: () -> Unit + buttonPositiveText: String?, + buttonNegativeText: String?, + buttonPositiveColor: Int?, + buttonNegativeColor: Int?, + onPositiveClick: (() -> Unit)? ) { val dialog = FullScreenDialog.newInstance( title = title, @@ -182,7 +182,9 @@ class InAppNotificationManagerImpl @Inject constructor( dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() = onPositiveClick() + override fun onPositiveClick() { + onPositiveClick?.invoke() + } override fun onNegativeClick() { dialog.dismiss() } From f7a62daf915278a163300ae78aef8dd28362341a Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 17:03:36 +0300 Subject: [PATCH 14/20] refactor(in-app): create directories for each dialog --- .../impl/InAppNotificationManagerImpl.kt | 15 ++++++++------- .../component/dialog/{ => alert}/AlertDialog.kt | 3 ++- .../dialog/{ => bottomSheet}/BottomSheetDialog.kt | 3 ++- .../dialog/{ => fullScreen}/FullScreenDialog.kt | 5 ++++- .../dialog/{ => topSheet}/TopSheetDialog.kt | 3 ++- 5 files changed, 18 insertions(+), 11 deletions(-) rename personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/{ => alert}/AlertDialog.kt (97%) rename personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/{ => bottomSheet}/BottomSheetDialog.kt (97%) rename personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/{ => fullScreen}/FullScreenDialog.kt (95%) rename personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/{ => topSheet}/TopSheetDialog.kt (97%) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index 7fdfa394..e7067f5b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -14,13 +14,14 @@ import androidx.fragment.app.FragmentManager import com.personalization.R import com.personalization.api.managers.InAppNotificationManager import com.personalization.errors.EmptyFieldError -import com.personalization.inAppNotification.view.component.dialog.ALERT_DIALOG_TAG -import com.personalization.inAppNotification.view.component.dialog.AlertDialog -import com.personalization.inAppNotification.view.component.dialog.BOTTOM_SHEET_TAG -import com.personalization.inAppNotification.view.component.dialog.BottomSheetDialog -import com.personalization.inAppNotification.view.component.dialog.FullScreenDialog -import com.personalization.inAppNotification.view.component.dialog.TOP_SHEET_DIALOG -import com.personalization.inAppNotification.view.component.dialog.TopSheetDialog +import com.personalization.inAppNotification.view.component.dialog.fullScreen.FULL_SCREEN_DIALOG_TAG +import com.personalization.inAppNotification.view.component.dialog.alert.ALERT_DIALOG_TAG +import com.personalization.inAppNotification.view.component.dialog.alert.AlertDialog +import com.personalization.inAppNotification.view.component.dialog.bottomSheet.BOTTOM_SHEET_TAG +import com.personalization.inAppNotification.view.component.dialog.bottomSheet.BottomSheetDialog +import com.personalization.inAppNotification.view.component.dialog.fullScreen.FullScreenDialog +import com.personalization.inAppNotification.view.component.dialog.topSheet.TOP_SHEET_DIALOG +import com.personalization.inAppNotification.view.component.dialog.topSheet.TopSheetDialog import com.personalization.inAppNotification.view.component.snackbar.Snackbar import com.personalization.sdk.data.models.dto.popUp.DialogDataDto import com.personalization.sdk.data.models.dto.popUp.PopupDto diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt similarity index 97% rename from personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt rename to personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt index 8d863ddb..72496db0 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt @@ -1,4 +1,4 @@ -package com.personalization.inAppNotification.view.component.dialog +package com.personalization.inAppNotification.view.component.dialog.alert import android.graphics.Color import android.graphics.drawable.ColorDrawable @@ -9,6 +9,7 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.AlertDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt similarity index 97% rename from personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt rename to personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt index e2a4dae9..ca881108 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt @@ -1,6 +1,6 @@ @file:Suppress("NewApi") -package com.personalization.inAppNotification.view.component.dialog +package com.personalization.inAppNotification.view.component.dialog.bottomSheet import android.graphics.Color import android.graphics.drawable.ColorDrawable @@ -11,6 +11,7 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.BottomSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt similarity index 95% rename from personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt rename to personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt index 2de59f70..461de8f1 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/FullScreenDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt @@ -1,4 +1,4 @@ -package com.personalization.inAppNotification.view.component.dialog +package com.personalization.inAppNotification.view.component.dialog.fullScreen import android.os.Bundle import android.view.LayoutInflater @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.FullScreenDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY @@ -14,6 +15,8 @@ import com.personalization.inAppNotification.view.component.utils.InAppConsts.IM import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY +const val FULL_SCREEN_DIALOG_TAG = "FullScreenDialog" + class FullScreenDialog : BaseInAppDialog() { private var _binding: FullScreenDialogBinding? = null diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt similarity index 97% rename from personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt rename to personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt index 032446d8..703a7908 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/TopSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt @@ -1,6 +1,6 @@ @file:Suppress("NewApi") -package com.personalization.inAppNotification.view.component.dialog +package com.personalization.inAppNotification.view.component.dialog.topSheet import android.graphics.Color import android.graphics.drawable.ColorDrawable @@ -11,6 +11,7 @@ import android.view.View import android.view.ViewGroup import com.personalization.databinding.TopSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer +import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY From 5ccce27969c2409625cf94f41b34778fb0a09502 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 17:22:23 +0300 Subject: [PATCH 15/20] refactor(in-app): move containers from dialog --- .../view/component/dialog/alert/AlertDialog.kt | 13 +------------ .../alert/container/AlertDialogViewContainer.kt | 16 ++++++++++++++++ .../dialog/bottomSheet/BottomSheetDialog.kt | 15 ++------------- .../container/BottomSheetDialogViewContainer.kt | 16 ++++++++++++++++ .../dialog/fullScreen/FullScreenDialog.kt | 13 +------------ .../container/FullScreenDialogContainer.kt | 16 ++++++++++++++++ .../component/dialog/topSheet/TopSheetDialog.kt | 16 ++-------------- .../container/TopSheetDialogViewContainer.kt | 16 ++++++++++++++++ 8 files changed, 70 insertions(+), 51 deletions(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt index 72496db0..501fe180 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt @@ -10,6 +10,7 @@ import android.view.ViewGroup import com.personalization.databinding.AlertDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog +import com.personalization.inAppNotification.view.component.dialog.alert.container.AlertDialogViewContainer import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY @@ -25,18 +26,6 @@ class AlertDialog : BaseInAppDialog() { private var _binding: AlertDialogBinding? = null private val binding get() = _binding!! - class AlertDialogViewContainer(binding: AlertDialogBinding) : InAppViewContainer { - override val backgroundImageView = binding.backgroundImageView - override val imageContainer = binding.imageContainer - override val titleTextView = binding.textContainer.title - override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept - override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer - override val buttonDecline = binding.buttonContainer.buttonDecline - override val closeButton = binding.closeButton - } - override val container: InAppViewContainer by lazy { AlertDialogViewContainer(binding) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt new file mode 100644 index 00000000..34a0d5e7 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt @@ -0,0 +1,16 @@ +package com.personalization.inAppNotification.view.component.dialog.alert.container + +import com.personalization.databinding.AlertDialogBinding +import com.personalization.inAppNotification.view.component.container.InAppViewContainer + +class AlertDialogViewContainer(binding: AlertDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton +} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt index ca881108..5602a0d9 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt @@ -12,6 +12,7 @@ import android.view.ViewGroup import com.personalization.databinding.BottomSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog +import com.personalization.inAppNotification.view.component.dialog.bottomSheet.container.BottomSheetDialogViewContainer import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY @@ -27,20 +28,8 @@ class BottomSheetDialog : BaseInAppDialog() { private var _binding: BottomSheetDialogBinding? = null private val binding get() = _binding!! - class BottomSheetViewContainer(binding: BottomSheetDialogBinding) : InAppViewContainer { - override val backgroundImageView = binding.backgroundImageView - override val imageContainer = binding.imageContainer - override val titleTextView = binding.textContainer.title - override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept - override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer - override val buttonDecline = binding.buttonContainer.buttonDecline - override val closeButton = binding.closeButton - } - override val container: InAppViewContainer by lazy { - BottomSheetViewContainer(binding) + BottomSheetDialogViewContainer(binding) } override fun onCreateView( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt new file mode 100644 index 00000000..f1182d11 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt @@ -0,0 +1,16 @@ +package com.personalization.inAppNotification.view.component.dialog.bottomSheet.container + +import com.personalization.databinding.BottomSheetDialogBinding +import com.personalization.inAppNotification.view.component.container.InAppViewContainer + +class BottomSheetDialogViewContainer(binding: BottomSheetDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton +} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt index 461de8f1..f6519198 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import com.personalization.databinding.FullScreenDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog +import com.personalization.inAppNotification.view.component.dialog.fullScreen.container.FullScreenDialogViewContainer import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY @@ -22,18 +23,6 @@ class FullScreenDialog : BaseInAppDialog() { private var _binding: FullScreenDialogBinding? = null private val binding get() = _binding!! - class FullScreenDialogViewContainer(binding: FullScreenDialogBinding) : InAppViewContainer { - override val backgroundImageView = binding.backgroundImageView - override val imageContainer = binding.imageContainer - override val titleTextView = binding.textContainer.title - override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept - override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer - override val buttonDecline = binding.buttonContainer.buttonDecline - override val closeButton = binding.closeButton - } - override val container: InAppViewContainer by lazy { FullScreenDialogViewContainer(binding) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt new file mode 100644 index 00000000..7e47d6e2 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt @@ -0,0 +1,16 @@ +package com.personalization.inAppNotification.view.component.dialog.fullScreen.container + +import com.personalization.databinding.FullScreenDialogBinding +import com.personalization.inAppNotification.view.component.container.InAppViewContainer + +class FullScreenDialogViewContainer(binding: FullScreenDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt index 703a7908..b7c3772e 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt @@ -12,6 +12,7 @@ import android.view.ViewGroup import com.personalization.databinding.TopSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog +import com.personalization.inAppNotification.view.component.dialog.topSheet.container.TopSheetDialogViewContainer import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY @@ -27,21 +28,8 @@ class TopSheetDialog : BaseInAppDialog() { private var _binding: TopSheetDialogBinding? = null private val binding get() = _binding!! - class TopSheetViewContainer(binding: TopSheetDialogBinding) : InAppViewContainer { - override val backgroundImageView = binding.backgroundImageView - override val imageContainer = binding.imageContainer - override val titleTextView = binding.textContainer.title - override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept - override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer - override val buttonDecline = binding.buttonContainer.buttonDecline - override val closeButton = binding.closeButton - } - - override val container: InAppViewContainer by lazy { - TopSheetViewContainer(binding) + TopSheetDialogViewContainer(binding) } override fun onCreateView( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt new file mode 100644 index 00000000..33f58ac9 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt @@ -0,0 +1,16 @@ +package com.personalization.inAppNotification.view.component.dialog.topSheet.container + +import com.personalization.databinding.TopSheetDialogBinding +import com.personalization.inAppNotification.view.component.container.InAppViewContainer + +class TopSheetDialogViewContainer(binding: TopSheetDialogBinding) : InAppViewContainer { + override val backgroundImageView = binding.backgroundImageView + override val imageContainer = binding.imageContainer + override val titleTextView = binding.textContainer.title + override val messageTextView = binding.textContainer.message + override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer + override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer + override val buttonDecline = binding.buttonContainer.buttonDecline + override val closeButton = binding.closeButton +} \ No newline at end of file From 877d4e1b05e4bf00cef3cde7f0ee9a292c89169c Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 17:36:20 +0300 Subject: [PATCH 16/20] fix(in-app): full screen dialog size --- .../component/dialog/fullScreen/FullScreenDialog.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt index f6519198..e62f0bab 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt @@ -1,6 +1,9 @@ package com.personalization.inAppNotification.view.component.dialog.fullScreen +import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -35,6 +38,16 @@ class FullScreenDialog : BaseInAppDialog() { return binding.root } + override fun onStart() { + super.onStart() + dialog?.window?.apply { + setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) + setGravity(Gravity.CENTER) + setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + setDimAmount(0.5f) + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null From 106fd7fc71eb8aa060acf3c7647cbb13863dd5f6 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 28 Apr 2025 22:22:15 +0300 Subject: [PATCH 17/20] refactor(in-app): rename positive/negative/accept to confirm/decline --- .../api/managers/InAppNotificationManager.kt | 52 ++--- .../impl/InAppNotificationManagerImpl.kt | 180 +++++++++--------- .../component/container/InAppViewContainer.kt | 4 +- .../view/component/dialog/BaseInAppDialog.kt | 40 ++-- .../component/dialog/alert/AlertDialog.kt | 24 +-- .../container/AlertDialogViewContainer.kt | 6 +- .../dialog/bottomSheet/BottomSheetDialog.kt | 24 +-- .../BottomSheetDialogViewContainer.kt | 6 +- .../dialog/fullScreen/FullScreenDialog.kt | 24 +-- .../container/FullScreenDialogContainer.kt | 4 +- .../dialog/topSheet/TopSheetDialog.kt | 24 +-- .../container/TopSheetDialogViewContainer.kt | 6 +- .../view/component/snackbar/Snackbar.kt | 20 +- .../view/component/utils/InAppConst.kt | 11 -- .../view/component/utils/InAppConsts.kt | 11 ++ .../data/models/dto/popUp/DialogDataDto.kt | 10 +- .../ui/click/NotificationClickListener.kt | 4 +- .../res/layout/alert_button_container.xml | 6 +- .../src/main/res/layout/custom_snackbar.xml | 4 +- .../src/main/res/values/colors.xml | 2 +- 20 files changed, 231 insertions(+), 231 deletions(-) delete mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConsts.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt index fb2c9bf3..721ecc08 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/InAppNotificationManager.kt @@ -14,53 +14,53 @@ interface InAppNotificationManager { title: String, message: String, imageUrl: String? = null, - buttonPositiveText: String? = null, - buttonNegativeText: String? = null, - buttonPositiveColor: Int? = null, - buttonNegativeColor: Int? = null, - onPositiveClick: (() -> Unit)? = null + buttonConfirmText: String? = null, + buttonDeclineText: String? = null, + buttonConfirmColor: Int? = null, + buttonDeclineColor: Int? = null, + onConfirmClick: (() -> Unit)? = null ) fun showFullScreenDialog( title: String, message: String, imageUrl: String? = null, - buttonPositiveText: String? = null, - buttonNegativeText: String? = null, - buttonPositiveColor: Int? = null, - buttonNegativeColor: Int? = null, - onPositiveClick: (() -> Unit)? = null + buttonConfirmText: String? = null, + buttonDeclineText: String? = null, + buttonConfirmColor: Int? = null, + buttonDeclineColor: Int? = null, + onConfirmClick: (() -> Unit)? = null ) - fun showBottomSheetDialog( + fun showBottomDialog( title: String, message: String, imageUrl: String? = null, - buttonPositiveText: String? = null, - buttonNegativeText: String? = null, - buttonPositiveColor: Int? = null, - buttonNegativeColor: Int? = null, - onPositiveClick: (() -> Unit)? = null + buttonConfirmText: String? = null, + buttonDeclineText: String? = null, + buttonConfirmColor: Int? = null, + buttonDeclineColor: Int? = null, + onConfirmClick: (() -> Unit)? = null ) - fun showTopSheetDialog( + fun showTopDialog( title: String, message: String, imageUrl: String? = null, - buttonPositiveText: String? = null, - buttonNegativeText: String? = null, - buttonPositiveColor: Int? = null, - buttonNegativeColor: Int? = null, - onPositiveClick: (() -> Unit)? = null + buttonConfirmText: String? = null, + buttonDeclineText: String? = null, + buttonConfirmColor: Int? = null, + buttonDeclineColor: Int? = null, + onConfirmClick: (() -> Unit)? = null ) fun showSnackBar( view: View, message: String, - buttonPositiveText: String, - buttonNegativeText: String, - onPositiveClick: () -> Unit, - onNegativeClick: () -> Unit + buttonConfirmText: String, + buttonDeclineText: String, + onConfirmClick: () -> Unit, + onDeclineClick: () -> Unit ) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt index e7067f5b..5a88eba0 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/inAppNotification/impl/InAppNotificationManagerImpl.kt @@ -47,17 +47,17 @@ class InAppNotificationManagerImpl @Inject constructor( private fun extractDialogData(popupDto: PopupDto): DialogDataDto { val deepLink = popupDto.popupActions?.link?.linkAndroid ?: popupDto.popupActions?.link?.linkWeb - val buttonPositiveColor = ContextCompat.getColor(context, R.color.buttonAcceptColor) - val buttonNegativeColor = ContextCompat.getColor(context, R.color.colorGray) + val buttonConfirmColor = ContextCompat.getColor(context, R.color.buttonConfirmColor) + val buttonDeclineColor = ContextCompat.getColor(context, R.color.colorGray) val buttonSubscription = popupDto.popupActions?.pushSubscribe?.buttonText - val buttonNegativeText = popupDto.popupActions?.close?.buttonText - val buttonPositiveText = buttonSubscription ?: popupDto.popupActions?.link?.buttonText + val buttonDeclineText = popupDto.popupActions?.close?.buttonText + val buttonConfirmText = buttonSubscription ?: popupDto.popupActions?.link?.buttonText val imageUrl: String? = popupDto.components?.image val title: String? = popupDto.components?.header val message: String? = popupDto.components?.text val position: Position = popupDto.position - val onPositiveClick = if (buttonSubscription != null) { + val onConfirmClick = if (buttonSubscription != null) { { requestPushNotifications() } } else { { openUrlInBrowser(url = deepLink) } @@ -67,11 +67,11 @@ class InAppNotificationManagerImpl @Inject constructor( title = title.orEmpty(), message = message.orEmpty(), imageUrl = imageUrl.orEmpty(), - buttonPositiveColor = buttonPositiveColor, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveText = buttonPositiveText.orEmpty(), - buttonNegativeText = buttonNegativeText.orEmpty(), - onPositiveClick = onPositiveClick, + buttonConfirmColor = buttonConfirmColor, + buttonDeclineColor = buttonDeclineColor, + buttonConfirmText = buttonConfirmText.orEmpty(), + buttonDeclineText = buttonDeclineText.orEmpty(), + onConfirmClick = onConfirmClick, position = position ) } @@ -82,44 +82,44 @@ class InAppNotificationManagerImpl @Inject constructor( title = dialogData.title, message = dialogData.message, imageUrl = dialogData.imageUrl, - buttonPositiveColor = dialogData.buttonPositiveColor, - buttonNegativeColor = dialogData.buttonNegativeColor, - buttonPositiveText = dialogData.buttonPositiveText, - buttonNegativeText = dialogData.buttonNegativeText, - onPositiveClick = dialogData.onPositiveClick + buttonConfirmColor = dialogData.buttonConfirmColor, + buttonDeclineColor = dialogData.buttonDeclineColor, + buttonConfirmText = dialogData.buttonConfirmText, + buttonDeclineText = dialogData.buttonDeclineText, + onConfirmClick = dialogData.onConfirmClick ) - Position.BOTTOM -> showBottomSheetDialog( + Position.BOTTOM -> showBottomDialog( title = dialogData.title, message = dialogData.message, imageUrl = dialogData.imageUrl, - buttonPositiveColor = dialogData.buttonPositiveColor, - buttonNegativeColor = dialogData.buttonNegativeColor, - buttonPositiveText = dialogData.buttonPositiveText, - buttonNegativeText = dialogData.buttonNegativeText, - onPositiveClick = dialogData.onPositiveClick + buttonConfirmColor = dialogData.buttonConfirmColor, + buttonDeclineColor = dialogData.buttonDeclineColor, + buttonConfirmText = dialogData.buttonConfirmText, + buttonDeclineText = dialogData.buttonDeclineText, + onConfirmClick = dialogData.onConfirmClick ) - Position.TOP -> showTopSheetDialog( + Position.TOP -> showTopDialog( title = dialogData.title, message = dialogData.message, imageUrl = dialogData.imageUrl, - buttonPositiveColor = dialogData.buttonPositiveColor, - buttonNegativeColor = dialogData.buttonNegativeColor, - buttonPositiveText = dialogData.buttonPositiveText, - buttonNegativeText = dialogData.buttonNegativeText, - onPositiveClick = dialogData.onPositiveClick + buttonConfirmColor = dialogData.buttonConfirmColor, + buttonDeclineColor = dialogData.buttonDeclineColor, + buttonConfirmText = dialogData.buttonConfirmText, + buttonDeclineText = dialogData.buttonDeclineText, + onConfirmClick = dialogData.onConfirmClick ) else -> showFullScreenDialog( title = dialogData.title, message = dialogData.message, imageUrl = dialogData.imageUrl, - buttonPositiveColor = dialogData.buttonPositiveColor, - buttonNegativeColor = dialogData.buttonNegativeColor, - buttonPositiveText = dialogData.buttonPositiveText, - buttonNegativeText = dialogData.buttonNegativeText, - onPositiveClick = dialogData.onPositiveClick + buttonConfirmColor = dialogData.buttonConfirmColor, + buttonDeclineColor = dialogData.buttonDeclineColor, + buttonConfirmText = dialogData.buttonConfirmText, + buttonDeclineText = dialogData.buttonDeclineText, + onConfirmClick = dialogData.onConfirmClick ) } } @@ -128,28 +128,28 @@ class InAppNotificationManagerImpl @Inject constructor( title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, - onPositiveClick: (() -> Unit)? + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, + onConfirmClick: (() -> Unit)? ) { val dialog = AlertDialog.newInstance( title = title, message = message, imageUrl = imageUrl, - buttonPositiveColor = buttonPositiveColor, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText + buttonConfirmColor = buttonConfirmColor, + buttonDeclineColor = buttonDeclineColor, + buttonConfirmText = buttonConfirmText, + buttonDeclineText = buttonDeclineText ) dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() { - onPositiveClick?.invoke() + override fun onConfirmClick() { + onConfirmClick?.invoke() } - override fun onNegativeClick() { + override fun onDeclineClick() { dialog.dismiss() } } @@ -165,28 +165,28 @@ class InAppNotificationManagerImpl @Inject constructor( title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, - onPositiveClick: (() -> Unit)? + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, + onConfirmClick: (() -> Unit)? ) { val dialog = FullScreenDialog.newInstance( title = title, message = message, imageUrl = imageUrl, - buttonPositiveColor = buttonPositiveColor, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText, + buttonConfirmColor = buttonConfirmColor, + buttonDeclineColor = buttonDeclineColor, + buttonConfirmText = buttonConfirmText, + buttonDeclineText = buttonDeclineText, ) dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() { - onPositiveClick?.invoke() + override fun onConfirmClick() { + onConfirmClick?.invoke() } - override fun onNegativeClick() { + override fun onDeclineClick() { dialog.dismiss() } } @@ -198,32 +198,32 @@ class InAppNotificationManagerImpl @Inject constructor( ) } - override fun showBottomSheetDialog( + override fun showBottomDialog( title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, - onPositiveClick: (() -> Unit)? + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, + onConfirmClick: (() -> Unit)? ) { val dialog = BottomSheetDialog.newInstance( title = title, message = message, imageUrl = imageUrl, - buttonPositiveColor = buttonPositiveColor, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText, + buttonConfirmColor = buttonConfirmColor, + buttonDeclineColor = buttonDeclineColor, + buttonConfirmText = buttonConfirmText, + buttonDeclineText = buttonDeclineText, ) dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() { - onPositiveClick?.invoke() + override fun onConfirmClick() { + onConfirmClick?.invoke() } - override fun onNegativeClick() { + override fun onDeclineClick() { dialog.dismiss() } } @@ -235,32 +235,32 @@ class InAppNotificationManagerImpl @Inject constructor( ) } - override fun showTopSheetDialog( + override fun showTopDialog( title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, - onPositiveClick: (() -> Unit)? + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, + onConfirmClick: (() -> Unit)? ) { val dialog = TopSheetDialog.newInstance( title = title, message = message, imageUrl = imageUrl, - buttonPositiveColor = buttonPositiveColor, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText, + buttonConfirmColor = buttonConfirmColor, + buttonDeclineColor = buttonDeclineColor, + buttonConfirmText = buttonConfirmText, + buttonDeclineText = buttonDeclineText, ) dialog.listener = ( object : NotificationClickListener { - override fun onPositiveClick() { - onPositiveClick?.invoke() + override fun onConfirmClick() { + onConfirmClick?.invoke() } - override fun onNegativeClick() { + override fun onDeclineClick() { dialog.dismiss() } } @@ -275,17 +275,17 @@ class InAppNotificationManagerImpl @Inject constructor( override fun showSnackBar( view: View, message: String, - buttonPositiveText: String, - buttonNegativeText: String, - onPositiveClick: () -> Unit, - onNegativeClick: () -> Unit + buttonConfirmText: String, + buttonDeclineText: String, + onConfirmClick: () -> Unit, + onDeclineClick: () -> Unit ) { Snackbar(view).show( message = message, - buttonPositiveText = buttonPositiveText, - buttonNegativeText = buttonNegativeText, - onPositiveClick = onPositiveClick, - onNegativeClick = onNegativeClick + buttonConfirmText = buttonConfirmText, + buttonDeclineText = buttonDeclineText, + onConfirmClick = onConfirmClick, + onDeclineClick = onDeclineClick ) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt index 77888b4f..561444c1 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/container/InAppViewContainer.kt @@ -10,8 +10,8 @@ interface InAppViewContainer { val imageContainer: ViewGroup val titleTextView: TextView val messageTextView: TextView - val buttonAcceptContainer: ViewGroup - val buttonAccept: TextView + val buttonConfirmContainer: ViewGroup + val buttonConfirm: TextView val buttonDeclineContainer: ViewGroup val buttonDecline: TextView val closeButton: View diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt index 37264f9e..20365255 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/BaseInAppDialog.kt @@ -5,10 +5,10 @@ import android.view.View import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment import com.personalization.inAppNotification.view.component.container.InAppViewContainer -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY @@ -36,7 +36,7 @@ abstract class BaseInAppDialog : DialogFragment() { private fun setupDialog() { initImage() initTextBlock() - initAcceptButton() + initConfirmButton() initDeclineButton() handleCloseButton() } @@ -55,26 +55,26 @@ abstract class BaseInAppDialog : DialogFragment() { container.messageTextView.text = arguments?.getString(MESSAGE_KEY).orEmpty() } - private fun initAcceptButton() { - val buttonText = arguments?.getString(BUTTON_POSITIVE_TEXT_KEY).orEmpty() - val positiveColor = arguments?.getOptionalInt(BUTTON_POSITIVE_COLOR_KEY) + private fun initConfirmButton() { + val buttonText = arguments?.getString(BUTTON_CONFIRM_TEXT_KEY).orEmpty() + val confirmColor = arguments?.getOptionalInt(BUTTON_CONFIRM_COLOR_KEY) if (buttonText.isEmpty()) { - container.buttonAcceptContainer.isVisible = false + container.buttonConfirmContainer.isVisible = false return } - container.buttonAcceptContainer.addPressEffectDeclarative() - container.buttonAccept.text = buttonText - positiveColor?.let { container.buttonAccept.setBackgroundColor(it) } - container.buttonAcceptContainer.setOnClickListener { + container.buttonConfirmContainer.addPressEffectDeclarative() + container.buttonConfirm.text = buttonText + confirmColor?.let { container.buttonConfirm.setBackgroundColor(it) } + container.buttonConfirmContainer.setOnClickListener { onButtonClick(true) } } private fun initDeclineButton() { - val buttonText = arguments?.getString(BUTTON_NEGATIVE_TEXT_KEY).orEmpty() - val negativeColor = arguments?.getOptionalInt(BUTTON_NEGATIVE_COLOR_KEY) + val buttonText = arguments?.getString(BUTTON_DECLINE_TEXT_KEY).orEmpty() + val declineColor = arguments?.getOptionalInt(BUTTON_DECLINE_COLOR_KEY) if (buttonText.isEmpty()) { container.buttonDeclineContainer.isVisible = false @@ -83,7 +83,7 @@ abstract class BaseInAppDialog : DialogFragment() { container.buttonDeclineContainer.addPressEffectDeclarative() container.buttonDecline.text = buttonText - negativeColor?.let { container.buttonDecline.setBackgroundColor(it) } + declineColor?.let { container.buttonDecline.setBackgroundColor(it) } container.buttonDeclineContainer.setOnClickListener { onButtonClick(false) } @@ -94,10 +94,10 @@ abstract class BaseInAppDialog : DialogFragment() { container.closeButton.setOnClickListener { dismiss() } } - private fun onButtonClick(isPositiveClick: Boolean) { - when (isPositiveClick) { - true -> listener?.onPositiveClick() - false -> listener?.onNegativeClick() + private fun onButtonClick(isConfirmClick: Boolean) { + when (isConfirmClick) { + true -> listener?.onConfirmClick() + false -> listener?.onDeclineClick() } dismiss() } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt index 501fe180..52f84d81 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/AlertDialog.kt @@ -11,10 +11,10 @@ import com.personalization.databinding.AlertDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.dialog.alert.container.AlertDialogViewContainer -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY @@ -58,20 +58,20 @@ class AlertDialog : BaseInAppDialog() { title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, ): AlertDialog { val dialog = AlertDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) - buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } - buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } + putString(BUTTON_CONFIRM_TEXT_KEY, buttonConfirmText) + putString(BUTTON_DECLINE_TEXT_KEY, buttonDeclineText) + buttonConfirmColor?.let { putInt(BUTTON_CONFIRM_COLOR_KEY, it) } + buttonDeclineColor?.let { putInt(BUTTON_DECLINE_COLOR_KEY, it) } } dialog.arguments = args return dialog diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt index 34a0d5e7..22d6446e 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/alert/container/AlertDialogViewContainer.kt @@ -8,9 +8,9 @@ class AlertDialogViewContainer(binding: AlertDialogBinding) : InAppViewContainer override val imageContainer = binding.imageContainer override val titleTextView = binding.textContainer.title override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonConfirmContainer = binding.buttonContainer.buttonConfirmContainer + override val buttonConfirm = binding.buttonContainer.buttonConfirm override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer override val buttonDecline = binding.buttonContainer.buttonDecline override val closeButton = binding.closeButton -} \ No newline at end of file +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt index 5602a0d9..9bf5e88f 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/BottomSheetDialog.kt @@ -13,10 +13,10 @@ import com.personalization.databinding.BottomSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.dialog.bottomSheet.container.BottomSheetDialogViewContainer -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY @@ -60,20 +60,20 @@ class BottomSheetDialog : BaseInAppDialog() { title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, ): BottomSheetDialog { val dialog = BottomSheetDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) - buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } - buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } + putString(BUTTON_CONFIRM_TEXT_KEY, buttonConfirmText) + putString(BUTTON_DECLINE_TEXT_KEY, buttonDeclineText) + buttonConfirmColor?.let { putInt(BUTTON_CONFIRM_COLOR_KEY, it) } + buttonDeclineColor?.let { putInt(BUTTON_DECLINE_COLOR_KEY, it) } } dialog.arguments = args return dialog diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt index f1182d11..643f4f53 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/bottomSheet/container/BottomSheetDialogViewContainer.kt @@ -8,9 +8,9 @@ class BottomSheetDialogViewContainer(binding: BottomSheetDialogBinding) : InAppV override val imageContainer = binding.imageContainer override val titleTextView = binding.textContainer.title override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonConfirmContainer = binding.buttonContainer.buttonConfirmContainer + override val buttonConfirm = binding.buttonContainer.buttonConfirm override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer override val buttonDecline = binding.buttonContainer.buttonDecline override val closeButton = binding.closeButton -} \ No newline at end of file +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt index e62f0bab..18b1feca 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/FullScreenDialog.kt @@ -11,10 +11,10 @@ import com.personalization.databinding.FullScreenDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.dialog.fullScreen.container.FullScreenDialogViewContainer -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY @@ -58,20 +58,20 @@ class FullScreenDialog : BaseInAppDialog() { title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int? + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int? ): FullScreenDialog { val dialog = FullScreenDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) - buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } - buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } + putString(BUTTON_CONFIRM_TEXT_KEY, buttonConfirmText) + putString(BUTTON_DECLINE_TEXT_KEY, buttonDeclineText) + buttonConfirmColor?.let { putInt(BUTTON_CONFIRM_COLOR_KEY, it) } + buttonDeclineColor?.let { putInt(BUTTON_DECLINE_COLOR_KEY, it) } } dialog.arguments = args return dialog diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt index 7e47d6e2..042f11fb 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/fullScreen/container/FullScreenDialogContainer.kt @@ -8,8 +8,8 @@ class FullScreenDialogViewContainer(binding: FullScreenDialogBinding) : InAppVie override val imageContainer = binding.imageContainer override val titleTextView = binding.textContainer.title override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonConfirmContainer = binding.buttonContainer.buttonConfirmContainer + override val buttonConfirm = binding.buttonContainer.buttonConfirm override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer override val buttonDecline = binding.buttonContainer.buttonDecline override val closeButton = binding.closeButton diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt index b7c3772e..20cc2138 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/TopSheetDialog.kt @@ -13,10 +13,10 @@ import com.personalization.databinding.TopSheetDialogBinding import com.personalization.inAppNotification.view.component.container.InAppViewContainer import com.personalization.inAppNotification.view.component.dialog.BaseInAppDialog import com.personalization.inAppNotification.view.component.dialog.topSheet.container.TopSheetDialogViewContainer -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_NEGATIVE_TEXT_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_COLOR_KEY -import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_POSITIVE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_DECLINE_TEXT_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_COLOR_KEY +import com.personalization.inAppNotification.view.component.utils.InAppConsts.BUTTON_CONFIRM_TEXT_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.IMAGE_URL_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.MESSAGE_KEY import com.personalization.inAppNotification.view.component.utils.InAppConsts.TITLE_KEY @@ -60,20 +60,20 @@ class TopSheetDialog : BaseInAppDialog() { title: String, message: String, imageUrl: String?, - buttonPositiveText: String?, - buttonNegativeText: String?, - buttonPositiveColor: Int?, - buttonNegativeColor: Int?, + buttonConfirmText: String?, + buttonDeclineText: String?, + buttonConfirmColor: Int?, + buttonDeclineColor: Int?, ): TopSheetDialog { val dialog = TopSheetDialog() val args = Bundle().apply { putString(TITLE_KEY, title) putString(MESSAGE_KEY, message) putString(IMAGE_URL_KEY, imageUrl) - putString(BUTTON_POSITIVE_TEXT_KEY, buttonPositiveText) - putString(BUTTON_NEGATIVE_TEXT_KEY, buttonNegativeText) - buttonPositiveColor?.let { putInt(BUTTON_POSITIVE_COLOR_KEY, it) } - buttonNegativeColor?.let { putInt(BUTTON_NEGATIVE_COLOR_KEY, it) } + putString(BUTTON_CONFIRM_TEXT_KEY, buttonConfirmText) + putString(BUTTON_DECLINE_TEXT_KEY, buttonDeclineText) + buttonConfirmColor?.let { putInt(BUTTON_CONFIRM_COLOR_KEY, it) } + buttonDeclineColor?.let { putInt(BUTTON_DECLINE_COLOR_KEY, it) } } dialog.arguments = args return dialog diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt index 33f58ac9..92f49fc5 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/dialog/topSheet/container/TopSheetDialogViewContainer.kt @@ -8,9 +8,9 @@ class TopSheetDialogViewContainer(binding: TopSheetDialogBinding) : InAppViewCon override val imageContainer = binding.imageContainer override val titleTextView = binding.textContainer.title override val messageTextView = binding.textContainer.message - override val buttonAcceptContainer = binding.buttonContainer.buttonAcceptContainer - override val buttonAccept = binding.buttonContainer.buttonAccept + override val buttonConfirmContainer = binding.buttonContainer.buttonConfirmContainer + override val buttonConfirm = binding.buttonContainer.buttonConfirm override val buttonDeclineContainer = binding.buttonContainer.buttonDeclineContainer override val buttonDecline = binding.buttonContainer.buttonDecline override val closeButton = binding.closeButton -} \ No newline at end of file +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/snackbar/Snackbar.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/snackbar/Snackbar.kt index 2fa2eaee..ab7656da 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/snackbar/Snackbar.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/snackbar/Snackbar.kt @@ -11,10 +11,10 @@ class Snackbar(private val rootView: View) { fun show( message: String, - buttonPositiveText: String, - buttonNegativeText: String, - onPositiveClick: () -> Unit, - onNegativeClick: () -> Unit + buttonConfirmText: String, + buttonDeclineText: String, + onConfirmClick: () -> Unit, + onDeclineClick: () -> Unit ) { val snackbar = Snackbar.make( /* view = */ rootView, @@ -26,16 +26,16 @@ class Snackbar(private val rootView: View) { with(binding) { title.text = message - positiveButton.text = buttonPositiveText - negativeButton.text = buttonNegativeText + confirmButton.text = buttonConfirmText + declineButton.text = buttonDeclineText - positiveButton.setOnClickListener { - onPositiveClick() + confirmButton.setOnClickListener { + onConfirmClick() snackbar.dismiss() } - negativeButton.setOnClickListener { - onNegativeClick() + declineButton.setOnClickListener { + onDeclineClick() snackbar.dismiss() } } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt deleted file mode 100644 index 72e4b484..00000000 --- a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConst.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.personalization.inAppNotification.view.component.utils - -object InAppConsts { - const val TITLE_KEY = "TITLE_KEY" - const val MESSAGE_KEY = "MESSAGE_KEY" - const val IMAGE_URL_KEY = "IMAGE_URL_KEY" - const val BUTTON_POSITIVE_COLOR_KEY = "BUTTON_POSITIVE_COLOR_KEY" - const val BUTTON_NEGATIVE_COLOR_KEY = "BUTTON_NEGATIVE_COLOR_KEY" - const val BUTTON_POSITIVE_TEXT_KEY = "BUTTON_POSITIVE_TEXT_KEY" - const val BUTTON_NEGATIVE_TEXT_KEY = "BUTTON_NEGATIVE_TEXT_KEY" -} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConsts.kt b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConsts.kt new file mode 100644 index 00000000..e05d05d7 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/inAppNotification/view/component/utils/InAppConsts.kt @@ -0,0 +1,11 @@ +package com.personalization.inAppNotification.view.component.utils + +object InAppConsts { + const val TITLE_KEY = "TITLE_KEY" + const val MESSAGE_KEY = "MESSAGE_KEY" + const val IMAGE_URL_KEY = "IMAGE_URL_KEY" + const val BUTTON_CONFIRM_COLOR_KEY = "BUTTON_CONFIRM_COLOR_KEY" + const val BUTTON_DECLINE_COLOR_KEY = "BUTTON_DECLINE_COLOR_KEY" + const val BUTTON_CONFIRM_TEXT_KEY = "BUTTON_CONFIRM_TEXT_KEY" + const val BUTTON_DECLINE_TEXT_KEY = "BUTTON_DECLINE_TEXT_KEY" +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/models/dto/popUp/DialogDataDto.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/models/dto/popUp/DialogDataDto.kt index 5ee7f2ad..17e92a20 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/models/dto/popUp/DialogDataDto.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/models/dto/popUp/DialogDataDto.kt @@ -4,10 +4,10 @@ data class DialogDataDto( val title: String, val message: String, val imageUrl: String, - val buttonPositiveColor: Int, - val buttonNegativeColor: Int, - val buttonPositiveText: String, - val buttonNegativeText: String, - val onPositiveClick: () -> Unit, + val buttonConfirmColor: Int, + val buttonDeclineColor: Int, + val buttonConfirmText: String, + val buttonDeclineText: String, + val onConfirmClick: () -> Unit, val position: Position ) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/ui/click/NotificationClickListener.kt b/personalization-sdk/src/main/kotlin/com/personalization/ui/click/NotificationClickListener.kt index 8aa8ed03..c5df06cc 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/ui/click/NotificationClickListener.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/ui/click/NotificationClickListener.kt @@ -1,6 +1,6 @@ package com.personalization.ui.click interface NotificationClickListener { - fun onPositiveClick() - fun onNegativeClick() + fun onConfirmClick() + fun onDeclineClick() } diff --git a/personalization-sdk/src/main/res/layout/alert_button_container.xml b/personalization-sdk/src/main/res/layout/alert_button_container.xml index 04a51887..f3dba914 100644 --- a/personalization-sdk/src/main/res/layout/alert_button_container.xml +++ b/personalization-sdk/src/main/res/layout/alert_button_container.xml @@ -27,7 +27,7 @@ diff --git a/personalization-sdk/src/main/res/layout/custom_snackbar.xml b/personalization-sdk/src/main/res/layout/custom_snackbar.xml index 4ad7ac6f..34eee862 100644 --- a/personalization-sdk/src/main/res/layout/custom_snackbar.xml +++ b/personalization-sdk/src/main/res/layout/custom_snackbar.xml @@ -17,7 +17,7 @@ tools:text="Some snackbar text" />