@@ -30,8 +30,23 @@ let host;
3030let port ;
3131let socket ;
3232
33+ const APOLLO_BACKEND = 'apollo-devtools-backend' ;
34+ const APOLLO_PROXY = 'apollo-devtools-proxy' ;
35+
3336const workerOnMessage = message => {
3437 const { data } = message ;
38+
39+ if ( data && data . source === APOLLO_BACKEND ) {
40+ if ( ! window . __APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__ ) {
41+ window . __APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__ = true ;
42+ }
43+
44+ postMessage ( {
45+ source : APOLLO_BACKEND ,
46+ payload : data ,
47+ } , '*' ) ;
48+ }
49+
3550 if ( data && ( data . __IS_REDUX_NATIVE_MESSAGE__ || data . __REPORT_REACT_DEVTOOLS_PORT__ ) ) {
3651 return true ;
3752 }
@@ -43,14 +58,22 @@ const workerOnMessage = message => {
4358 socket . send ( JSON . stringify ( data ) ) ;
4459} ;
4560
61+ const onWindowMessage = e => {
62+ const { data } = e ;
63+ if ( data && data . source === APOLLO_PROXY ) {
64+ const message = typeof data . payload === 'string' ? { event : data . payload } : data . payload ;
65+ worker . postMessage ( { source : APOLLO_PROXY , ...message } ) ;
66+ }
67+ } ;
68+
4669const createJSRuntime = ( ) => {
4770 // This worker will run the application javascript code,
4871 // making sure that it's run in an environment without a global
4972 // document, to make it consistent with the JSC executor environment.
5073 // eslint-disable-next-line
5174 worker = new Worker ( `${ __webpack_public_path__ } RNDebuggerWorker.js` ) ;
5275 worker . addEventListener ( 'message' , workerOnMessage ) ;
53-
76+ window . addEventListener ( 'message' , onWindowMessage ) ;
5477 actions . setDebuggerWorker ( worker , 'connected' ) ;
5578} ;
5679
@@ -59,6 +82,7 @@ const shutdownJSRuntime = () => {
5982 scriptExecuted = false ;
6083 if ( worker ) {
6184 worker . terminate ( ) ;
85+ window . removeEventListener ( 'messsage' , onWindowMessage ) ;
6286 setDevMenuMethods ( [ ] ) ;
6387 }
6488 worker = null ;
0 commit comments