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({