Skip to content

Commit d5828e4

Browse files
committed
Moving out apollo logic to not clutter worker too much
1 parent 1208575 commit d5828e4

File tree

7 files changed

+78
-69
lines changed

7 files changed

+78
-69
lines changed

.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"__REPORT_REACT_DEVTOOLS_PORT__",
2626
"__FETCH_SUPPORT__",
2727
"__NETWORK_INSPECT__",
28+
"__APOLLO_CLIENT__",
2829
"__APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__"
2930
]
3031
}

app/middlewares/debuggerAPI.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,19 @@ let host;
3030
let port;
3131
let socket;
3232

33+
const APOLLO_BACKEND = 'apollo-devtools-backend';
34+
const APOLLO_PROXY = 'apollo-devtools-proxy';
35+
3336
const workerOnMessage = message => {
3437
const { data } = message;
3538

36-
if (data && data.source === 'apollo-devtools-backend') {
39+
if (data && data.source === APOLLO_BACKEND) {
3740
if (!window.__APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__) {
3841
window.__APOLLO_DEVTOOLS_SHOULD_DISPLAY_PANEL__ = true;
3942
}
4043

4144
postMessage({
42-
source: 'apollo-devtools-backend',
45+
source: APOLLO_BACKEND,
4346
payload: data,
4447
}, '*');
4548
}
@@ -56,10 +59,10 @@ const workerOnMessage = message => {
5659
};
5760

5861
const onWindowMessage = e => {
59-
const {data} = e;
60-
if (data && data.source === 'apollo-devtools-proxy') {
62+
const { data } = e;
63+
if (data && data.source === APOLLO_PROXY) {
6164
const message = typeof data.payload === 'string' ? { event: data.payload } : data.payload;
62-
worker.postMessage({ source: 'apollo-devtools-proxy', ...message });
65+
worker.postMessage({ source: APOLLO_PROXY, ...message });
6366
}
6467
};
6568

app/worker/apollo.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import Bridge from 'apollo-client-devtools/bridge';
2+
import { initBackend, sendBridgeReady } from 'apollo-client-devtools/backend';
3+
import { version as devToolsVersion } from 'apollo-client-devtools/package.json';
4+
import { getSafeAsyncStorage } from './asyncStorage';
5+
6+
export function handleApolloClient(modules) {
7+
const interval = setInterval(() => {
8+
if (!self.__APOLLO_CLIENT__) {
9+
return;
10+
}
11+
12+
clearInterval(interval);
13+
14+
const hook = {
15+
ApolloClient: self.__APOLLO_CLIENT__,
16+
devToolsVersion,
17+
};
18+
19+
let listener;
20+
21+
const bridge = new Bridge({
22+
listen(fn) {
23+
listener = self.addEventListener('message', evt => {
24+
if (evt.data.source === 'apollo-devtools-proxy') {
25+
return fn(evt.data);
26+
}
27+
});
28+
},
29+
send(data) {
30+
postMessage({
31+
...data,
32+
source: 'apollo-devtools-backend',
33+
});
34+
},
35+
});
36+
37+
bridge.on('init', () => {
38+
sendBridgeReady();
39+
});
40+
41+
bridge.on('shutdown', () => {
42+
self.removeEventListener('message', listener);
43+
});
44+
45+
initBackend(bridge, hook, getSafeAsyncStorage(modules.AsyncStorage));
46+
}, 1000);
47+
}

app/worker/asyncStorage.js

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@ export const getClearAsyncStorageFn = AsyncStorage => {
33
return () => AsyncStorage.clear().catch(f => f);
44
};
55

6-
export const getSafeAsyncStorage = AsyncStorage => {
7-
return {
8-
async getItem(key) {
9-
try {
10-
return AsyncStorage.getItem(key);
11-
} catch (e) {
12-
return null;
13-
}
14-
},
15-
async setItem(key, value) {
16-
try {
17-
return AsyncStorage.setItem(key, value);
18-
} catch (e) {
19-
}
6+
export const getSafeAsyncStorage = AsyncStorage => ({
7+
async getItem(key) {
8+
try {
9+
return AsyncStorage.getItem(key);
10+
} catch (e) {
11+
return null;
2012
}
21-
}
22-
};
13+
},
14+
async setItem(key, value) {
15+
try {
16+
return AsyncStorage.setItem(key, value);
17+
} catch (e) {
18+
return null;
19+
}
20+
},
21+
});
2322

2423
export const getShowAsyncStorageFn = AsyncStorage => {
2524
if (!AsyncStorage.getAllKeys || !AsyncStorage.getItem) return;

app/worker/index.js

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ import devToolsEnhancer, { composeWithDevTools } from './reduxAPI';
1717
import * as RemoteDev from './remotedev';
1818
import { getRequiredModules, ignoreRNDIntervalSpy } from './utils';
1919
import { toggleNetworkInspect } from './networkInspect';
20-
import { getSafeAsyncStorage } from './asyncStorage';
21-
import Bridge from 'apollo-client-devtools/bridge';
22-
import { initBackend, sendBridgeReady } from 'apollo-client-devtools/backend';
23-
import { version as devToolsVersion } from 'apollo-client-devtools/package.json';
20+
import { handleApolloClient } from './apollo';
21+
2422
/* eslint-disable no-underscore-dangle */
2523
self.__REMOTEDEV__ = RemoteDev;
2624

@@ -55,47 +53,7 @@ const setupRNDebugger = async message => {
5553
reportDefaultReactDevToolsPort(modules);
5654
}
5755

58-
const interval = setInterval(() => {
59-
if (!self.__APOLLO_CLIENT__) {
60-
return;
61-
}
62-
63-
clearInterval(interval);
64-
65-
const hook = {
66-
ApolloClient: self.__APOLLO_CLIENT__,
67-
devToolsVersion
68-
};
69-
70-
let listener;
71-
72-
const bridge = new Bridge({
73-
listen(fn) {
74-
listener = self.addEventListener('message', evt => {
75-
if (evt.data.source === 'apollo-devtools-proxy') {
76-
return fn(evt.data);
77-
}
78-
});
79-
},
80-
send(data) {
81-
postMessage({
82-
...data,
83-
source: 'apollo-devtools-backend',
84-
});
85-
},
86-
});
87-
88-
bridge.on('init', () => {
89-
sendBridgeReady();
90-
});
91-
92-
bridge.on("shutdown", () => {
93-
self.removeEventListener('message', listener);
94-
});
95-
96-
initBackend(bridge, hook, getSafeAsyncStorage(modules.AsyncStorage));
97-
98-
}, 1000);
56+
handleApolloClient(modules);
9957
};
10058

10159
const messageHandlers = {

electron/extensions.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ export default async () => {
1313
} catch (e) {} // eslint-disable-line
1414
}
1515
BrowserWindow.addDevToolsExtension(path.resolve('dist/devtools-helper/'));
16-
1716
} else {
1817
BrowserWindow.addDevToolsExtension(path.join(__dirname, 'devtools-helper/'));
1918
}
20-
BrowserWindow.addDevToolsExtension(path.resolve('../apollo-client-devtools/shells/webextension/'));
19+
BrowserWindow.addDevToolsExtension(
20+
path.resolve('../node_modules/apollo-client-devtools/shells/webextension/')
21+
);
2122
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
},
7171
"dependencies": {
7272
"adbkit": "^2.11.0",
73-
"apollo-dev-tools": "*",
73+
"apollo-client-devtools": "*",
7474
"electron-context-menu": "jhen0409/electron-context-menu#async-popup",
7575
"electron-fetch": "^1.2.1",
7676
"electron-gh-releases": "^2.0.4",

0 commit comments

Comments
 (0)