Properly make use of status events provided by DevTools server
Summary: Uses the new statuses emitted by DevTools in https://github.com/facebook/react/pull/22848 to better handle the connection state when connecting to DevTools from Flipper. Reviewed By: bvaughn Differential Revision: D32891240 fbshipit-source-id: 142d9996e05b5113e6dca28074c461d5a5acd38f
This commit is contained in:
committed by
Facebook GitHub Bot
parent
297697c209
commit
e75238cbd2
@@ -233,9 +233,35 @@ export function devicePlugin(client: DevicePluginClient) {
|
|||||||
);
|
);
|
||||||
startResult = devToolsInstance.module
|
startResult = devToolsInstance.module
|
||||||
.setContentDOMNode(devToolsNode)
|
.setContentDOMNode(devToolsNode)
|
||||||
.setStatusListener((status: string) => {
|
.setStatusListener((message: string, status: string) => {
|
||||||
// TODO: since devToolsInstance is an instance, we are probably leaking memory here
|
// TODO: since devToolsInstance is an instance, we are probably leaking memory here
|
||||||
setStatus(ConnectionStatus.Initializing, status);
|
if (typeof status === 'undefined') {
|
||||||
|
// Preserves old behavior in case DevTools doesn't provide status,
|
||||||
|
// which may happen if loading an older version of DevTools.
|
||||||
|
setStatus(ConnectionStatus.Initializing, message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case 'server-connected': {
|
||||||
|
setStatus(ConnectionStatus.Initializing, message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'devtools-connected': {
|
||||||
|
if (pollHandle) {
|
||||||
|
clearTimeout(pollHandle);
|
||||||
|
}
|
||||||
|
setStatus(ConnectionStatus.Connected, message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'error': {
|
||||||
|
if (pollHandle) {
|
||||||
|
clearTimeout(pollHandle);
|
||||||
|
}
|
||||||
|
setStatus(ConnectionStatus.Error, message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.startServer(DEV_TOOLS_PORT, 'localhost', undefined, {
|
.startServer(DEV_TOOLS_PORT, 'localhost', undefined, {
|
||||||
surface: 'flipper',
|
surface: 'flipper',
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ type LoggerOptions = {
|
|||||||
surface?: string;
|
surface?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type StatusTypes = 'server-connected' | 'devtools-connected' | 'error';
|
||||||
|
type StatusListener = (message: string, status: StatusTypes) => void;
|
||||||
|
|
||||||
declare module 'react-devtools-core/standalone' {
|
declare module 'react-devtools-core/standalone' {
|
||||||
interface DevTools {
|
interface DevTools {
|
||||||
setContentDOMNode(node: HTMLElement): this;
|
setContentDOMNode(node: HTMLElement): this;
|
||||||
@@ -25,7 +28,7 @@ declare module 'react-devtools-core/standalone' {
|
|||||||
httpsOptions?: ServerOptions,
|
httpsOptions?: ServerOptions,
|
||||||
loggerOptions?: LoggerOptions,
|
loggerOptions?: LoggerOptions,
|
||||||
): {close: () => void};
|
): {close: () => void};
|
||||||
setStatusListener(listener: (message: string) => void): this;
|
setStatusListener(listener: StatusListener): this;
|
||||||
}
|
}
|
||||||
const DevTools: DevTools;
|
const DevTools: DevTools;
|
||||||
export default DevTools;
|
export default DevTools;
|
||||||
|
|||||||
Reference in New Issue
Block a user