Fix to avoid loading of disabled device plugins
Summary: There is a bug right now that even for disabled plugins we're loading them. In particular, this led to the Flipper freezes caused by Logs plugin even if it is disabled. Reviewed By: passy Differential Revision: D26503012 fbshipit-source-id: 2068626f4637ced44c457ee1b7ba7fffdcf5aa47
This commit is contained in:
committed by
Facebook GitHub Bot
parent
805261b429
commit
c0010bea4c
@@ -956,7 +956,7 @@ test('Sandy plugins support isPluginSupported + selectPlugin', async () => {
|
||||
expect(pluginInstance.isPluginAvailable(definition.id)).toBeTruthy();
|
||||
expect(pluginInstance.isPluginAvailable('nonsense')).toBeFalsy();
|
||||
expect(pluginInstance.isPluginAvailable(definition2.id)).toBeFalsy(); // not enabled yet
|
||||
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeTruthy();
|
||||
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeFalsy(); // not enabled yet
|
||||
expect(pluginInstance.activatedStub).toBeCalledTimes(1);
|
||||
expect(pluginInstance.deactivatedStub).toBeCalledTimes(0);
|
||||
expect(linksSeen).toEqual([]);
|
||||
@@ -964,6 +964,7 @@ test('Sandy plugins support isPluginSupported + selectPlugin', async () => {
|
||||
// star and navigate to a device plugin
|
||||
store.dispatch(starPlugin({plugin: definition3}));
|
||||
pluginInstance.selectPlugin(definition3.id);
|
||||
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeTruthy();
|
||||
expect(store.getState().connections.selectedPlugin).toBe(definition3.id);
|
||||
expect(renderer.baseElement.querySelector('h1')).toMatchInlineSnapshot(`
|
||||
<h1>
|
||||
|
||||
@@ -109,7 +109,10 @@ test('New device with same serial removes & cleans the old one', async () => {
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: device2,
|
||||
});
|
||||
device2.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
||||
device2.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
|
||||
expect(device.isArchived).toBe(false);
|
||||
expect(device.connected.get()).toBe(false);
|
||||
|
||||
@@ -212,13 +212,16 @@ export default class BaseDevice {
|
||||
}
|
||||
|
||||
loadDevicePlugins(
|
||||
devicePlugins?: DevicePluginMap,
|
||||
devicePlugins: DevicePluginMap,
|
||||
enabledDevicePlugins: Set<string>,
|
||||
pluginStates?: Record<string, any>,
|
||||
) {
|
||||
if (!devicePlugins) {
|
||||
return;
|
||||
}
|
||||
const plugins = Array.from(devicePlugins.values());
|
||||
const plugins = Array.from(devicePlugins.values()).filter((p) =>
|
||||
enabledDevicePlugins?.has(p.id),
|
||||
);
|
||||
for (const plugin of plugins) {
|
||||
this.loadDevicePlugin(plugin, pluginStates?.[plugin.id]);
|
||||
}
|
||||
|
||||
@@ -240,7 +240,10 @@ export default (store: Store, logger: Logger) => {
|
||||
payload: new Set(reconnectedDevices),
|
||||
});
|
||||
|
||||
androidDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
||||
androidDevice.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
store.dispatch({
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: androidDevice,
|
||||
|
||||
@@ -22,7 +22,10 @@ export default (store: Store, _logger: Logger) => {
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
device.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
||||
device.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
store.dispatch({
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: device,
|
||||
|
||||
@@ -134,7 +134,10 @@ function processDevices(
|
||||
serial: udid,
|
||||
});
|
||||
const iOSDevice = new IOSDevice(udid, type, name);
|
||||
iOSDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
||||
iOSDevice.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
store.dispatch({
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: iOSDevice,
|
||||
|
||||
@@ -57,7 +57,10 @@ export async function registerMetroDevice(
|
||||
name: metroDevice.title,
|
||||
});
|
||||
|
||||
metroDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
||||
metroDevice.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
store.dispatch({
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: metroDevice,
|
||||
|
||||
@@ -124,7 +124,10 @@ export default class MockFlipper {
|
||||
type: 'REGISTER_DEVICE',
|
||||
payload: device,
|
||||
});
|
||||
device.loadDevicePlugins(this._store.getState().plugins.devicePlugins);
|
||||
device.loadDevicePlugins(
|
||||
this._store.getState().plugins.devicePlugins,
|
||||
this.store.getState().connections.userStarredDevicePlugins,
|
||||
);
|
||||
this._devices.push(device);
|
||||
return device;
|
||||
}
|
||||
|
||||
@@ -802,6 +802,7 @@ export function importDataToStore(source: string, data: string, store: Store) {
|
||||
});
|
||||
archivedDevice.loadDevicePlugins(
|
||||
store.getState().plugins.devicePlugins,
|
||||
store.getState().connections.userStarredDevicePlugins,
|
||||
deserializeObject(device.pluginStates),
|
||||
);
|
||||
store.dispatch({
|
||||
|
||||
Reference in New Issue
Block a user