Skip to content

Commit 501b323

Browse files
evan-masseauclaude
andcommitted
fix: closeForm passes no args, bump close timeout to 600ms
- Update JS closeForm to pass empty formId (close all forms) - Remove unused formId vararg from KlaviyoJsBridge.closeForm() - Bump CLOSE_TIMEOUT from 500ms to 600ms for more buffer over the ~350ms JS close animation - Add Uri.parse mock to FormLifecycleCallbackTest setup Part of MAGE-287 Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent 8274a92 commit 501b323

6 files changed

Lines changed: 12 additions & 14 deletions

File tree

sdk/forms/src/main/assets/klaviyo-js-bridge.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,16 @@ window.openForm = function (formId) {
9393
}
9494

9595
/**
96-
* Close a Klaviyo form by formId, or any currently open forms
96+
* Close any currently open Klaviyo forms
9797
*
98-
* @param {string} formId
9998
* @returns {boolean}
10099
*/
101100
window.closeForm = function (formId) {
102101
document.head.dispatchEvent(
103102
new CustomEvent(
104103
'closeForm',
105104
{
106-
detail: {
107-
formId: formId
108-
}
105+
detail: {}
109106
}
110107
)
111108
)

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ internal class KlaviyoJsBridge : JsBridge {
4646
formId
4747
)
4848

49-
override fun closeForm() = evaluateJavascript(
50-
HelperFunction.closeForm,
51-
""
52-
)
49+
override fun closeForm() = evaluateJavascript(HelperFunction.closeForm)
5350

5451
override fun profileMutation(profile: ImmutableProfile) = evaluateJavascript(
5552
HelperFunction.profileMutation,

sdk/forms/src/main/java/com/klaviyo/forms/presentation/KlaviyoPresentationManager.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ internal class KlaviyoPresentationManager() : PresentationManager {
140140
/**
141141
* Grace period to close a form with animation, before we just dismiss
142142
* the overlay activity without waiting for formDisappeared event.
143-
* Must exceed the JS close animation duration (~400ms) or the activity
144-
* teardown will kill the animation before formDisappeared is sent.
143+
* Must exceed the JS close animation duration (~350ms) with a buffer for signaling delays
144+
* or else teardown will kill the webview's rendering before formDisappeared can be sent.
145145
*/
146-
private const val CLOSE_TIMEOUT = 500L
146+
private const val CLOSE_TIMEOUT = 600L
147147
}
148148
}

sdk/forms/src/test/java/com/klaviyo/forms/FormLifecycleCallbackTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.klaviyo.forms
22

3+
import android.net.Uri
34
import com.klaviyo.analytics.Klaviyo
45
import com.klaviyo.analytics.linking.DeepLinking
56
import com.klaviyo.core.Registry
@@ -10,6 +11,7 @@ import com.klaviyo.forms.presentation.PresentationState
1011
import io.mockk.every
1112
import io.mockk.mockk
1213
import io.mockk.mockkObject
14+
import io.mockk.mockkStatic
1315
import io.mockk.unmockkAll
1416
import io.mockk.verify
1517
import org.junit.After
@@ -34,6 +36,8 @@ internal class FormLifecycleCallbackTest : BaseTest() {
3436
super.setup()
3537
every { mockPresentationManager.presentationState } returns PresentationState.Presented
3638
Registry.register<PresentationManager>(mockPresentationManager)
39+
mockkStatic(Uri::class)
40+
every { Uri.parse(any()) } returns mockk(relaxed = true)
3741
nativeBridge = KlaviyoNativeBridge()
3842
}
3943

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ class KlaviyoJsBridgeTest : BaseTest() {
216216

217217
verify {
218218
jsEvaluator.evaluateJavascript(
219-
eq("""window.closeForm("")"""),
219+
eq("""window.closeForm()"""),
220220
any()
221221
)
222222
}

sdk/forms/src/test/java/com/klaviyo/forms/presentation/KlaviyoPresentationManagerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ class KlaviyoPresentationManagerTest : BaseTest() {
225225
verify(exactly = 0) { mockWebViewClient.detachWebView() }
226226
verify(exactly = 0) { mockOverlayActivity.finish() }
227227

228-
staticClock.execute(500L)
228+
staticClock.execute(600L)
229229

230230
verify(exactly = 1) { mockWebViewClient.detachWebView() }
231231
verify(exactly = 1) { mockOverlayActivity.finish() }

0 commit comments

Comments
 (0)