From 71d18f41cee56333b6e9411c8852bfc8d4511165 Mon Sep 17 00:00:00 2001 From: Sergey Sozinov <103035673+sergeysozinov@users.noreply.github.com> Date: Fri, 19 Apr 2024 10:15:42 +0300 Subject: [PATCH 1/3] MBX-3181: changed order handle click and request permission (#453) --- .../mobile_sdk/inapp/presentation/actions/InAppAction.kt | 4 ++-- .../inapp/presentation/actions/InAppActionResult.kt | 3 ++- .../inapp/presentation/view/AbstractInAppViewHolder.kt | 5 +++++ .../mobile_sdk/inapp/presentation/InAppActionsTest.kt | 2 -- 4 files changed, 9 insertions(+), 5 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 a7ac0189..352e20ae 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 973a7c3e..eaab3142 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 fd976ec6..e3b6d6a2 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 d046c94e..995ef3ed 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) From b16b8d0dfe696bd3d78f36a0be660a366cc8cb9c Mon Sep 17 00:00:00 2001 From: Sergey Sozinov <103035673+sergeysozinov@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:56:22 +0300 Subject: [PATCH 2/3] MBX-3295: fixed dead lock (#450) --- sdk/src/main/java/cloud/mindbox/mobile_sdk/Mindbox.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sdk/src/main/java/cloud/mindbox/mobile_sdk/Mindbox.kt b/sdk/src/main/java/cloud/mindbox/mobile_sdk/Mindbox.kt index 5bcfe6e5..004759c0 100644 --- a/sdk/src/main/java/cloud/mindbox/mobile_sdk/Mindbox.kt +++ b/sdk/src/main/java/cloud/mindbox/mobile_sdk/Mindbox.kt @@ -95,6 +95,8 @@ object Mindbox : MindboxLog { private val mutex = Mutex() + private val inAppMutex = Mutex() + private var firstInitCall: Boolean = true /** @@ -522,7 +524,7 @@ object Mindbox : MindboxLog { if (activity != null && lifecycleManager.isCurrentActivityResumed) { inAppMessageManager.registerCurrentActivity(activity) mindboxScope.launch { - mutex.withLock { + inAppMutex.withLock { firstInitCall = false inAppMessageManager.listenEventAndInApp() inAppMessageManager.initLogs() @@ -576,8 +578,8 @@ object Mindbox : MindboxLog { ) if (firstInitCall) { mindboxScope.launch { - mutex.withLock { - InitializeLock.await(InitializeLock.State.SAVE_MINDBOX_CONFIG) + InitializeLock.await(InitializeLock.State.SAVE_MINDBOX_CONFIG) + inAppMutex.withLock { if (!firstInitCall) return@launch firstInitCall = false inAppMessageManager.listenEventAndInApp() From a616abbbb1ae926022d5c5da57e173bce2af2834 Mon Sep 17 00:00:00 2001 From: Sergey Sozinov Date: Fri, 19 Apr 2024 10:48:11 +0300 Subject: [PATCH 3/3] Bump SDK version to 2.9.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1f53b10d..61a9d4b0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,4 +21,4 @@ android.enableJetifier=true kotlin.code.style=official # SDK version property -SDK_VERSION_NAME=2.9.0-rc \ No newline at end of file +SDK_VERSION_NAME=2.9.0 \ No newline at end of file