Skip to content

Commit 7c0dba3

Browse files
authored
RMF: do not dismiss promo_single_action on share action click (#6066)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1208671518894266/task/1210248635492286 ### Description Don't dismiss `promo_single_action` remote message on action click, if the action is of type "share".
1 parent 1b0a8e8 commit 7c0dba3

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

remote-messaging/remote-messaging-impl/src/main/java/com/duckduckgo/remote/messaging/impl/RealRemoteMessageModel.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,13 @@ class RealRemoteMessageModel @Inject constructor(
7070

7171
override suspend fun onActionClicked(remoteMessage: RemoteMessage): Action? {
7272
remoteMessagingPixels.fireRemoteMessageActionClickedPixel(remoteMessage)
73-
withContext(dispatchers.io()) {
74-
remoteMessagingRepository.dismissMessage(remoteMessage.id)
73+
val action = remoteMessage.content.getAction()
74+
if (action !is Action.Share) {
75+
withContext(dispatchers.io()) {
76+
remoteMessagingRepository.dismissMessage(remoteMessage.id)
77+
}
7578
}
76-
return remoteMessage.content.getAction()
79+
return action
7780
}
7881

7982
private fun Content.getPrimaryAction(): Action? {

remote-messaging/remote-messaging-impl/src/test/java/com/duckduckgo/remote/messaging/impl/RemoteMessagingModelTests.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
package com.duckduckgo.remote.messaging.impl
1818

1919
import com.duckduckgo.common.test.CoroutineTestRule
20+
import com.duckduckgo.remote.messaging.api.Action
2021
import com.duckduckgo.remote.messaging.api.Content
22+
import com.duckduckgo.remote.messaging.api.Content.Placeholder.VISUAL_DESIGN_UPDATE
2123
import com.duckduckgo.remote.messaging.api.RemoteMessage
2224
import com.duckduckgo.remote.messaging.api.RemoteMessagingRepository
2325
import com.duckduckgo.remote.messaging.impl.pixels.RemoteMessagingPixels
@@ -27,6 +29,7 @@ import org.junit.Before
2729
import org.junit.Rule
2830
import org.junit.Test
2931
import org.mockito.kotlin.mock
32+
import org.mockito.kotlin.never
3033
import org.mockito.kotlin.verify
3134

3235
class RemoteMessagingModelTests {
@@ -87,4 +90,29 @@ class RemoteMessagingModelTests {
8790
verify(remoteMessagingRepository).dismissMessage(remoteMessage.id)
8891
assertEquals(action, null)
8992
}
93+
94+
@Test
95+
fun onActionClickedThenPixelFiredAndMessageNotDismissedIfActionShare() = runTest {
96+
val action = Action.Share(
97+
value = "",
98+
additionalParameters = null,
99+
)
100+
val remoteMessage = RemoteMessage(
101+
id = "id1",
102+
Content.PromoSingleAction(
103+
titleText = "",
104+
descriptionText = "",
105+
placeholder = VISUAL_DESIGN_UPDATE,
106+
actionText = "",
107+
action = action,
108+
),
109+
matchingRules = emptyList(),
110+
exclusionRules = emptyList(),
111+
)
112+
val result = testee.onActionClicked(remoteMessage)
113+
114+
verify(remoteMessagingPixels).fireRemoteMessageActionClickedPixel(remoteMessage)
115+
verify(remoteMessagingRepository, never()).dismissMessage(remoteMessage.id)
116+
assertEquals(action, result)
117+
}
90118
}

0 commit comments

Comments
 (0)