Skip to content

Commit acf8b8f

Browse files
committed
Revert "fix: make FormCtaClicked.deepLinkUrl nullable so CTA events fire even without a deep link"
This reverts commit 7919856.
1 parent 5d68db7 commit acf8b8f

3 files changed

Lines changed: 12 additions & 22 deletions

File tree

sdk/forms-core/src/main/java/com/klaviyo/forms/FormLifecycleEvent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ sealed interface FormLifecycleEvent {
4141
* Triggered when a user taps a call-to-action (CTA) button in the form.
4242
*
4343
* @property buttonLabel The text label of the CTA button.
44-
* @property deepLinkUrl The deep link URI configured for the CTA, or null if not configured.
44+
* @property deepLinkUrl The deep link URI configured for the CTA.
4545
*/
4646
data class FormCtaClicked(
4747
override val formId: String,
4848
override val formName: String,
4949
val buttonLabel: String,
50-
val deepLinkUrl: Uri?
50+
val deepLinkUrl: Uri
5151
) : FormLifecycleEvent
5252
}

sdk/forms/src/main/java/com/klaviyo/forms/bridge/KlaviyoNativeBridge.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,14 @@ internal class KlaviyoNativeBridge : NativeBridge {
121121
* We alleviate this race condition by postponing till next activity resumes if current activity is null.
122122
*/
123123
private fun deepLink(message: OpenDeepLink) {
124-
val deepLinkUri = message.route?.let { it.toUri() }
124+
val deepLinkUri = message.route?.toUri()
125125

126-
if (deepLinkUri != null) {
127-
DeepLinking.handleDeepLink(deepLinkUri)
128-
} else {
129-
Registry.log.verbose("Form CTA with no Android route configured: ${message.formId}")
126+
if (deepLinkUri == null) {
127+
Registry.log.warning("Form CTA with no Android route configured: ${message.formId}")
128+
return
130129
}
131130

131+
DeepLinking.handleDeepLink(deepLinkUri)
132132
invokeFormLifecycleHandler(
133133
FormLifecycleEvent.FormCtaClicked(
134134
formId = message.formId,

sdk/forms/src/test/java/com/klaviyo/forms/bridge/KlaviyoNativeBridgeTest.kt

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import org.json.JSONException
3030
import org.json.JSONObject
3131
import org.junit.After
3232
import org.junit.Assert.assertEquals
33-
import org.junit.Assert.assertNull
3433
import org.junit.Before
3534
import org.junit.Test
3635

@@ -282,7 +281,7 @@ internal class KlaviyoNativeBridgeTest : BaseTest() {
282281
}
283282

284283
@Test
285-
fun `openDeepLink with empty android route emits lifecycle event with null deepLinkUrl and does not navigate`() {
284+
fun `openDeepLink with empty android route skips lifecycle callback and does not navigate`() {
286285
/**
287286
* @see com.klaviyo.forms.bridge.KlaviyoNativeBridge.deepLink
288287
*/
@@ -291,29 +290,20 @@ internal class KlaviyoNativeBridgeTest : BaseTest() {
291290
"type": "openDeepLink",
292291
"data": {
293292
"ios": "klaviyotest://settings",
294-
"android": "",
295-
"formId": "abc",
296-
"formName": "My Form",
297-
"buttonLabel": "Click Me"
293+
"android": ""
298294
}
299295
}
300296
""".trimIndent()
301297

302298
mockkObject(DeepLinking)
303299
every { DeepLinking.handleDeepLink(any<Uri>()) } returns Unit
304300

305-
val events = mutableListOf<FormLifecycleEvent>()
306-
val callback = FormLifecycleHandler { event -> events.add(event) }
307-
Registry.register<FormLifecycleHandler>(callback)
301+
val mockLifecycleHandler = mockk<FormLifecycleHandler>(relaxed = true)
302+
Registry.register<FormLifecycleHandler>(mockLifecycleHandler)
308303

309304
postMessage(emptyAndroidMessage)
310305

311-
assertEquals(1, events.size)
312-
val ctaEvent = events[0] as FormLifecycleEvent.FormCtaClicked
313-
assertEquals("abc", ctaEvent.formId)
314-
assertEquals("My Form", ctaEvent.formName)
315-
assertEquals("Click Me", ctaEvent.buttonLabel)
316-
assertNull(ctaEvent.deepLinkUrl)
306+
verify(exactly = 0) { mockLifecycleHandler.onFormLifecycleEvent(any()) }
317307
verify(exactly = 0) { DeepLinking.handleDeepLink(any<Uri>()) }
318308

319309
Registry.unregister<FormLifecycleHandler>()

0 commit comments

Comments
 (0)