From 412b8f63605524d93826bec9e3b4f010183f891b Mon Sep 17 00:00:00 2001 From: Chris Beer <cabeer@stanford.edu> Date: Fri, 18 Sep 2020 08:08:47 -0700 Subject: [PATCH] Avoid connecting plugins if they don't need it --- __tests__/src/extend/pluginMapping.test.js | 22 ++++++++++++++++++++-- src/extend/pluginMapping.js | 2 ++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/__tests__/src/extend/pluginMapping.test.js b/__tests__/src/extend/pluginMapping.test.js index 735d9f603..2d699e3f6 100644 --- a/__tests__/src/extend/pluginMapping.test.js +++ b/__tests__/src/extend/pluginMapping.test.js @@ -58,8 +58,12 @@ describe('connectPluginsToStore', () => { const ComponentB = props => null; const plugins = [ - { component: ComponentA, mode: 'wrap', target: 'Window' }, - { component: ComponentB, mode: 'add', target: 'TopBar' }, + { + component: ComponentA, mapStateToProps: {}, mode: 'wrap', target: 'Window', + }, + { + component: ComponentB, mapDispatchToProps: {}, mode: 'add', target: 'TopBar', + }, ]; const result = connectPluginsToStore(plugins); @@ -67,6 +71,20 @@ describe('connectPluginsToStore', () => { expect(result[0].component.displayName).toBe('Connect(ComponentA)'); expect(result[1].component.displayName).toBe('Connect(ComponentB)'); }); + + it('returns plugins unchanged that do not need a connection to the store', () => { + /** */ + const ComponentA = props => null; + + const plugins = [ + { + component: ComponentA, mode: 'wrap', target: 'Window', + }, + ]; + + const result = connectPluginsToStore(plugins); + expect(result[0].component).toEqual(ComponentA); + }); }); describe('addPluginsToCompanionWindowsRegistry', () => { diff --git a/src/extend/pluginMapping.js b/src/extend/pluginMapping.js index 895c7e8c1..efc449252 100644 --- a/src/extend/pluginMapping.js +++ b/src/extend/pluginMapping.js @@ -40,6 +40,8 @@ export function addPluginsToCompanionWindowsRegistry(plugins) { /** Connect plugin component to state */ function connectPluginComponent(plugin) { + if (!plugin.mapStateToProps && !plugin.mapDispatchToProps) return plugin.component; + return connect( plugin.mapStateToProps, plugin.mapDispatchToProps, -- GitLab