@@ -10,32 +10,38 @@ let sendPromiseData = (promise, key) => {
10
10
executePromise ()-> ignore
11
11
}
12
12
13
- let useMessageHandler = getPromisesAndHandler => {
13
+ let useMessageHandler = getMessageHandler => {
14
14
React .useEffect (_ => {
15
- let (promises , messageHandler ) = getPromisesAndHandler ()
15
+ let messageHandler = getMessageHandler ()
16
+
16
17
let setupMessageListener = _ => {
17
- Utils .messageParentWindow ([("preMountLoaderIframeMountedCallback" , true -> JSON .Encode .bool )])
18
18
Window .addEventListener ("message" , messageHandler )
19
+ Utils .messageParentWindow ([("preMountLoaderIframeMountedCallback" , true -> JSON .Encode .bool )])
19
20
}
20
21
21
22
let cleanupMessageListener = _ => {
22
- Utils .messageParentWindow ([("preMountLoaderIframeUnMount" , true -> JSON .Encode .bool )])
23
23
Window .removeEventListener ("message" , messageHandler )
24
+ Utils .messageParentWindow ([("preMountLoaderIframeUnMount" , true -> JSON .Encode .bool )])
24
25
}
25
26
26
- setupMessageListener ()
27
-
28
- let executeAllPromises = async () => {
29
- try {
30
- let _ = await Promise .all (promises )
31
- } catch {
32
- | error => Console .error2 ("Error in message handler:" , error )
27
+ let handleCleanUpEventListener = (ev : Window .event ) => {
28
+ open Utils
29
+ let dict = ev .data -> safeParse -> getDictFromJson
30
+ if dict -> Dict .get ("cleanUpPreMountLoaderIframe" )-> Option .isSome {
31
+ cleanupMessageListener ()
33
32
}
34
- cleanupMessageListener ()
35
33
}
36
- executeAllPromises ()-> ignore
37
34
38
- Some (cleanupMessageListener )
35
+ Window .addEventListener ("message" , handleCleanUpEventListener )
36
+
37
+ setupMessageListener ()
38
+
39
+ Some (
40
+ () => {
41
+ cleanupMessageListener ()
42
+ Window .removeEventListener ("message" , handleCleanUpEventListener )
43
+ },
44
+ )
39
45
}, [])
40
46
}
41
47
@@ -87,8 +93,7 @@ module PreMountLoaderForElements = {
87
93
}
88
94
}
89
95
90
- let promises = [paymentMethodsPromise , customerPaymentMethodsPromise , sessionTokensPromise ]
91
- (promises , messageHandler )
96
+ messageHandler
92
97
})
93
98
94
99
React .null
@@ -114,8 +119,7 @@ module PreMountLoaderForPMMElements = {
114
119
}
115
120
}
116
121
117
- let promises = [savedPaymentMethodsPromise ]
118
- (promises , messageHandler )
122
+ messageHandler
119
123
})
120
124
121
125
React .null
0 commit comments