From ed9bcf2e2a76f9bb66dd50cf335f1e241f9f6815 Mon Sep 17 00:00:00 2001 From: Sergey Sozinov Date: Wed, 17 Apr 2024 15:48:44 +0300 Subject: [PATCH 1/2] MBX-3181: changed order handle click and request permission --- .../mobile_sdk/inapp/presentation/actions/InAppAction.kt | 4 ++-- .../inapp/presentation/actions/InAppActionResult.kt | 3 ++- .../inapp/presentation/view/AbstractInAppViewHolder.kt | 9 +++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt index a7ac0189a..c5130379b 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt @@ -27,11 +27,11 @@ internal class PushPermissionInAppAction( override fun execute(mindboxView: MindboxView?): InAppActionResult { mindboxLogI("In-app for push activation was clicked") - mindboxView?.requestPermission() return InAppActionResult( redirectUrl = "", payload = payload, - shouldDismiss = shouldDismiss() + shouldDismiss = shouldDismiss(), + shouldCallRequestPermission = true ) } diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt index 973a7c3ed..037e500a7 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt @@ -3,5 +3,6 @@ package cloud.mindbox.mobile_sdk.inapp.presentation.actions internal data class InAppActionResult( val redirectUrl: String, val payload: String, - val shouldDismiss: Boolean + val shouldDismiss: Boolean, + val shouldCallRequestPermission: Boolean = false ) \ No newline at end of file diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt index fd976ec67..b273227e7 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt @@ -66,6 +66,8 @@ internal abstract class AbstractInAppViewHolder : var redirectUrl: String var payload: String var shouldDismiss: Boolean + var shouldCallRequestPermission: Boolean + currentDialog.setSingleClickListener { val inAppData = inAppActionHandler.handle( @@ -77,6 +79,7 @@ internal abstract class AbstractInAppViewHolder : redirectUrl = this.redirectUrl payload = this.payload shouldDismiss = this.shouldDismiss + shouldCallRequestPermission = this.shouldCallRequestPermission } wrapper.onInAppClick.onClick() @@ -85,11 +88,17 @@ internal abstract class AbstractInAppViewHolder : redirectUrl, payload ) + if (shouldDismiss) { inAppCallback.onInAppDismissed(wrapper.inAppType.inAppId) mindboxLogI("In-app dismissed by click") hide() } + + if (shouldCallRequestPermission) { + inAppActionHandler.mindboxView?.requestPermission() + } + InAppMessageViewDisplayerImpl.isActionExecuted = true } } From 72dedfa82414c8e46d24bc6bf59e8e9a7630f525 Mon Sep 17 00:00:00 2001 From: Sergey Sozinov Date: Wed, 17 Apr 2024 16:06:02 +0300 Subject: [PATCH 2/2] MBX-3181: changed order handle click and request permission --- .../mobile_sdk/inapp/presentation/actions/InAppAction.kt | 2 +- .../inapp/presentation/actions/InAppActionResult.kt | 2 +- .../inapp/presentation/view/AbstractInAppViewHolder.kt | 6 +----- .../mobile_sdk/inapp/presentation/InAppActionsTest.kt | 2 -- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt index c5130379b..352e20aeb 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppAction.kt @@ -31,7 +31,7 @@ internal class PushPermissionInAppAction( redirectUrl = "", payload = payload, shouldDismiss = shouldDismiss(), - shouldCallRequestPermission = true + onCompleted = { mindboxView?.requestPermission() } ) } diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt index 037e500a7..eaab3142a 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/actions/InAppActionResult.kt @@ -4,5 +4,5 @@ internal data class InAppActionResult( val redirectUrl: String, val payload: String, val shouldDismiss: Boolean, - val shouldCallRequestPermission: Boolean = false + val onCompleted: (() -> Unit)? = null ) \ No newline at end of file diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt index b273227e7..e3b6d6a22 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/presentation/view/AbstractInAppViewHolder.kt @@ -66,7 +66,6 @@ internal abstract class AbstractInAppViewHolder : var redirectUrl: String var payload: String var shouldDismiss: Boolean - var shouldCallRequestPermission: Boolean currentDialog.setSingleClickListener { @@ -79,7 +78,6 @@ internal abstract class AbstractInAppViewHolder : redirectUrl = this.redirectUrl payload = this.payload shouldDismiss = this.shouldDismiss - shouldCallRequestPermission = this.shouldCallRequestPermission } wrapper.onInAppClick.onClick() @@ -95,9 +93,7 @@ internal abstract class AbstractInAppViewHolder : hide() } - if (shouldCallRequestPermission) { - inAppActionHandler.mindboxView?.requestPermission() - } + inAppData.onCompleted?.invoke() InAppMessageViewDisplayerImpl.isActionExecuted = true } diff --git a/sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppActionsTest.kt b/sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppActionsTest.kt index d046c94e8..995ef3ed0 100644 --- a/sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppActionsTest.kt +++ b/sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/presentation/InAppActionsTest.kt @@ -3,7 +3,6 @@ package cloud.mindbox.mobile_sdk.inapp.presentation import cloud.mindbox.mobile_sdk.inapp.presentation.actions.PushPermissionInAppAction import cloud.mindbox.mobile_sdk.inapp.presentation.actions.RedirectUrlInAppAction import io.mockk.mockk -import io.mockk.verify import org.junit.Assert import org.junit.Before import org.junit.Test @@ -51,7 +50,6 @@ class InAppActionsTest { val data = action.execute(mindboxView) - verify { mindboxView.requestPermission() } Assert.assertEquals("", data.redirectUrl) Assert.assertEquals(payload, data.payload) Assert.assertEquals(true, data.shouldDismiss)