@@ -33,12 +33,7 @@ let socket;
33
33
const workerOnMessage = message => {
34
34
const { data } = message ;
35
35
36
- if ( data && data . source === 'apollo-devtools-proxy' ) {
37
- const message = typeof data . payload === 'string' ? { event : data . payload } : data . payload ;
38
- worker . postMessage ( { source : 'apollo-devtools-proxy' , ...message } ) ;
39
- }
40
-
41
- if ( data . source === 'apollo-devtools-backend' ) {
36
+ if ( data && data . source === 'apollo-devtools-backend' ) {
42
37
if ( ! window . __APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__ ) {
43
38
window . __APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__ = true ;
44
39
}
@@ -60,13 +55,22 @@ const workerOnMessage = message => {
60
55
socket . send ( JSON . stringify ( data ) ) ;
61
56
} ;
62
57
58
+ const onWindowMessage = e => {
59
+ const { data} = e ;
60
+ if ( data && data . source === 'apollo-devtools-proxy' ) {
61
+ const message = typeof data . payload === 'string' ? { event : data . payload } : data . payload ;
62
+ worker . postMessage ( { source : 'apollo-devtools-proxy' , ...message } ) ;
63
+ }
64
+ } ;
65
+
63
66
const createJSRuntime = ( ) => {
64
67
// This worker will run the application javascript code,
65
68
// making sure that it's run in an environment without a global
66
69
// document, to make it consistent with the JSC executor environment.
67
70
// eslint-disable-next-line
68
71
worker = new Worker ( `${ __webpack_public_path__ } RNDebuggerWorker.js` ) ;
69
72
worker . addEventListener ( 'message' , workerOnMessage ) ;
73
+ window . addEventListener ( 'message' , onWindowMessage ) ;
70
74
actions . setDebuggerWorker ( worker , 'connected' ) ;
71
75
} ;
72
76
@@ -75,6 +79,7 @@ const shutdownJSRuntime = () => {
75
79
scriptExecuted = false ;
76
80
if ( worker ) {
77
81
worker . terminate ( ) ;
82
+ window . removeEventListener ( 'messsage' , onWindowMessage ) ;
78
83
setDevMenuMethods ( [ ] ) ;
79
84
}
80
85
worker = null ;
0 commit comments