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..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 @@ -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(), + 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 973a7c3ed..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 @@ -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 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 fd976ec67..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,6 +66,7 @@ internal abstract class AbstractInAppViewHolder : var redirectUrl: String var payload: String var shouldDismiss: Boolean + currentDialog.setSingleClickListener { val inAppData = inAppActionHandler.handle( @@ -85,11 +86,15 @@ internal abstract class AbstractInAppViewHolder : redirectUrl, payload ) + if (shouldDismiss) { inAppCallback.onInAppDismissed(wrapper.inAppType.inAppId) mindboxLogI("In-app dismissed by click") hide() } + + 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)