@@ -6,7 +6,6 @@ import { sendEvent, createPostMessengerEvent, POSTMESSENGER_EVENT_NAMES } from '
66
77const IOS_INTERFACE_NAME = 'paypalMessageModalCallbackHandler' ;
88const ANDROID_INTERFACE_NAME = 'paypalMessageModalCallbackHandler' ;
9- // these constants should maintain parity with MESSAGE_MODAL_EVENT_NAMES in core-web-sdk
109
1110function updateProps ( newProps , propListeners ) {
1211 Array . from ( propListeners . values ( ) ) . forEach ( listener => {
@@ -15,20 +14,43 @@ function updateProps(newProps, propListeners) {
1514 Object . assign ( window . xprops , newProps ) ;
1615}
1716
18- export function handleBrowserEvents ( trustedOrigin , propListeners , updatedPropsEvent ) {
17+ export function handlePropsUpdateEvent ( propListeners , updatedPropsEvent ) {
1918 const {
20- origin : eventOrigin ,
21- data : { eventName, id, eventPayload : newProps }
19+ data : { eventPayload : newProps }
2220 } = updatedPropsEvent ;
23-
24- if ( eventOrigin === trustedOrigin && eventName === 'PROPS_UPDATE' && newProps && typeof newProps === 'object' ) {
25- // send event ack with original event id so PostMessenger will stop reposting event
26- sendEvent ( createPostMessengerEvent ( 'ack' , id ) , trustedOrigin ) ;
21+ if ( newProps && typeof newProps === 'object' ) {
2722 const validProps = validateProps ( newProps ) ;
2823 updateProps ( validProps , propListeners ) ;
2924 }
3025}
3126
27+ export function logModalClose ( linkName ) {
28+ logger . track ( {
29+ index : '1' ,
30+ et : 'CLICK' ,
31+ event_type : 'modal_close' ,
32+ page_view_link_name : linkName
33+ } ) ;
34+ }
35+
36+ export function handleBrowserEvents ( clientOrigin , propListeners , event ) {
37+ const {
38+ origin : eventOrigin ,
39+ data : { eventName, id }
40+ } = event ;
41+ if ( eventOrigin !== clientOrigin ) {
42+ return ;
43+ }
44+ if ( eventName === 'PROPS_UPDATE' ) {
45+ handlePropsUpdateEvent ( propListeners , event ) ;
46+ }
47+ if ( eventName === 'MODAL_CLOSED' ) {
48+ logModalClose ( event . data . eventPayload . linkName ) ;
49+ }
50+ // send event ack with original event id so PostMessenger will stop reposting event
51+ sendEvent ( createPostMessengerEvent ( 'ack' , id ) , clientOrigin ) ;
52+ }
53+
3254const getAccount = ( merchantId , clientId , payerId ) => {
3355 if ( merchantId ) {
3456 return merchantId ;
@@ -144,12 +166,7 @@ const setupBrowser = props => {
144166 createPostMessengerEvent ( 'message' , POSTMESSENGER_EVENT_NAMES . CLOSE , eventPayload ) ,
145167 trustedOrigin
146168 ) ;
147- logger . track ( {
148- index : '1' ,
149- et : 'CLICK' ,
150- event_type : 'modal_close' ,
151- page_view_link_name : linkName
152- } ) ;
169+ logModalClose ( linkName ) ;
153170 } ,
154171 // Overridable defaults
155172 integrationType : __MESSAGES__ . __TARGET__ ,
0 commit comments