diff --git a/desktop/app/src/__tests__/PluginContainer.node.tsx b/desktop/app/src/__tests__/PluginContainer.node.tsx
index b697dc89d..bb1cba385 100644
--- a/desktop/app/src/__tests__/PluginContainer.node.tsx
+++ b/desktop/app/src/__tests__/PluginContainer.node.tsx
@@ -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(`
diff --git a/desktop/app/src/__tests__/disconnect.node.tsx b/desktop/app/src/__tests__/disconnect.node.tsx
index 286188acf..e4e9f019c 100644
--- a/desktop/app/src/__tests__/disconnect.node.tsx
+++ b/desktop/app/src/__tests__/disconnect.node.tsx
@@ -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);
diff --git a/desktop/app/src/devices/BaseDevice.tsx b/desktop/app/src/devices/BaseDevice.tsx
index fac73b55e..62974431c 100644
--- a/desktop/app/src/devices/BaseDevice.tsx
+++ b/desktop/app/src/devices/BaseDevice.tsx
@@ -212,13 +212,16 @@ export default class BaseDevice {
}
loadDevicePlugins(
- devicePlugins?: DevicePluginMap,
+ devicePlugins: DevicePluginMap,
+ enabledDevicePlugins: Set,
pluginStates?: Record,
) {
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]);
}
diff --git a/desktop/app/src/dispatcher/androidDevice.tsx b/desktop/app/src/dispatcher/androidDevice.tsx
index cbe4ac13e..6d088d281 100644
--- a/desktop/app/src/dispatcher/androidDevice.tsx
+++ b/desktop/app/src/dispatcher/androidDevice.tsx
@@ -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,
diff --git a/desktop/app/src/dispatcher/desktopDevice.tsx b/desktop/app/src/dispatcher/desktopDevice.tsx
index a2688354b..3229d5cb3 100644
--- a/desktop/app/src/dispatcher/desktopDevice.tsx
+++ b/desktop/app/src/dispatcher/desktopDevice.tsx
@@ -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,
diff --git a/desktop/app/src/dispatcher/iOSDevice.tsx b/desktop/app/src/dispatcher/iOSDevice.tsx
index 90c1f7c7e..6ca96cd5a 100644
--- a/desktop/app/src/dispatcher/iOSDevice.tsx
+++ b/desktop/app/src/dispatcher/iOSDevice.tsx
@@ -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,
diff --git a/desktop/app/src/dispatcher/metroDevice.tsx b/desktop/app/src/dispatcher/metroDevice.tsx
index a71555cf0..d57d7f0bd 100644
--- a/desktop/app/src/dispatcher/metroDevice.tsx
+++ b/desktop/app/src/dispatcher/metroDevice.tsx
@@ -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,
diff --git a/desktop/app/src/test-utils/MockFlipper.tsx b/desktop/app/src/test-utils/MockFlipper.tsx
index df545ca25..1048b312c 100644
--- a/desktop/app/src/test-utils/MockFlipper.tsx
+++ b/desktop/app/src/test-utils/MockFlipper.tsx
@@ -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;
}
diff --git a/desktop/app/src/utils/exportData.tsx b/desktop/app/src/utils/exportData.tsx
index f70db9630..500ce6c82 100644
--- a/desktop/app/src/utils/exportData.tsx
+++ b/desktop/app/src/utils/exportData.tsx
@@ -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({