From c670d4f1a880a3dd0132741882765e3e44222563 Mon Sep 17 00:00:00 2001 From: Moran T <morant@brainpop.com> Date: Tue, 27 Feb 2018 15:13:23 +0200 Subject: [PATCH] Remove shouldComponentUpdate from vmListenerHOC, move block drag end to target pane, which already has all the needed props. --- src/containers/target-pane.jsx | 17 +++++++++++++++++ src/lib/vm-listener-hoc.jsx | 22 ---------------------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/containers/target-pane.jsx b/src/containers/target-pane.jsx index de6d6e9b1..889d84185 100644 --- a/src/containers/target-pane.jsx +++ b/src/containers/target-pane.jsx @@ -10,6 +10,7 @@ import { } from '../reducers/modals'; import {activateTab, COSTUMES_TAB_INDEX} from '../reducers/editor-tab'; +import {setReceivedBlocks} from '../reducers/hovered-target'; import TargetPaneComponent from '../components/target-pane/target-pane.jsx'; import spriteLibraryContent from '../lib/libraries/sprites.json'; @@ -18,6 +19,7 @@ class TargetPane extends React.Component { constructor (props) { super(props); bindAll(this, [ + 'handleBlockDragEnd', 'handleChangeSpriteDirection', 'handleChangeSpriteName', 'handleChangeSpriteSize', @@ -31,6 +33,12 @@ class TargetPane extends React.Component { 'handlePaintSpriteClick' ]); } + componentDidMount () { + this.props.vm.addListener('BLOCK_DRAG_END', this.handleBlockDragEnd); + } + componentWillUnmount () { + this.props.vm.removeListener('BLOCK_DRAG_END', this.handleBlockDragEnd); + } handleChangeSpriteDirection (direction) { this.props.vm.postSpriteInfo({direction}); } @@ -71,6 +79,12 @@ class TargetPane extends React.Component { }); } } + handleBlockDragEnd (blocks) { + if (this.props.hoveredTarget.sprite && this.props.hoveredTarget.sprite !== this.props.editingTarget) { + this.props.vm.shareBlocksToTarget(blocks, this.props.hoveredTarget.sprite); + this.props.onReceivedBlocks(true); + } + } render () { const { onActivateTab, // eslint-disable-line no-unused-vars @@ -134,6 +148,9 @@ const mapDispatchToProps = dispatch => ({ }, onActivateTab: tabIndex => { dispatch(activateTab(tabIndex)); + }, + onReceivedBlocks: receivedBlocks => { + dispatch(setReceivedBlocks(receivedBlocks)); } }); diff --git a/src/lib/vm-listener-hoc.jsx b/src/lib/vm-listener-hoc.jsx index 3ae81fdbb..8e7a0ca17 100644 --- a/src/lib/vm-listener-hoc.jsx +++ b/src/lib/vm-listener-hoc.jsx @@ -8,7 +8,6 @@ import {connect} from 'react-redux'; import {updateEditingTarget, updateTargets} from '../reducers/targets'; import {updateBlockDrag} from '../reducers/block-drag'; import {updateMonitors} from '../reducers/monitors'; -import {setReceivedBlocks} from '../reducers/hovered-target'; /* * Higher Order Component to manage events emitted by the VM @@ -20,7 +19,6 @@ const vmListenerHOC = function (WrappedComponent) { constructor (props) { super(props); bindAll(this, [ - 'handleBlockDragEnd', 'handleKeyDown', 'handleKeyUp' ]); @@ -33,8 +31,6 @@ const vmListenerHOC = function (WrappedComponent) { this.props.vm.on('targetsUpdate', this.props.onTargetsUpdate); this.props.vm.on('MONITORS_UPDATE', this.props.onMonitorsUpdate); this.props.vm.on('BLOCK_DRAG_UPDATE', this.props.onBlockDragUpdate); - this.props.vm.on('BLOCK_DRAG_END', this.handleBlockDragEnd); - } componentDidMount () { if (this.props.attachKeyboardEvents) { @@ -42,21 +38,12 @@ const vmListenerHOC = function (WrappedComponent) { document.addEventListener('keyup', this.handleKeyUp); } } - shouldComponentUpdate () { - return false; - } componentWillUnmount () { if (this.props.attachKeyboardEvents) { document.removeEventListener('keydown', this.handleKeyDown); document.removeEventListener('keyup', this.handleKeyUp); } } - handleBlockDragEnd (blocks) { - if (this.props.hoveredSprite && this.props.hoveredSprite !== this.props.editingTarget) { - this.props.vm.shareBlocksToTarget(blocks, this.props.hoveredSprite); - this.props.onReceivedBlocks(true); - } - } handleKeyDown (e) { // Don't capture keys intended for Blockly inputs. if (e.target !== document && e.target !== document.body) return; @@ -88,13 +75,10 @@ const vmListenerHOC = function (WrappedComponent) { const { /* eslint-disable no-unused-vars */ attachKeyboardEvents, - editingTarget, - hoveredSprite, onBlockDragUpdate, onKeyDown, onKeyUp, onMonitorsUpdate, - onReceivedBlocks, onTargetsUpdate, /* eslint-enable no-unused-vars */ ...props @@ -104,13 +88,10 @@ const vmListenerHOC = function (WrappedComponent) { } VMListener.propTypes = { attachKeyboardEvents: PropTypes.bool, - editingTarget: PropTypes.string, - hoveredSprite: PropTypes.string, onBlockDragUpdate: PropTypes.func.isRequired, onKeyDown: PropTypes.func, onKeyUp: PropTypes.func, onMonitorsUpdate: PropTypes.func.isRequired, - onReceivedBlocks: PropTypes.func.isRequired, onTargetsUpdate: PropTypes.func.isRequired, vm: PropTypes.instanceOf(VM).isRequired }; @@ -132,9 +113,6 @@ const vmListenerHOC = function (WrappedComponent) { }, onBlockDragUpdate: areBlocksOverGui => { dispatch(updateBlockDrag(areBlocksOverGui)); - }, - onReceivedBlocks: receivedBlocks => { - dispatch(setReceivedBlocks(receivedBlocks)); } }); return connect( -- GitLab