diff --git a/package.json b/package.json index 246d5ddb212ed54d5055b26765b7c9ce398470e7..6959e770d6ff15f87b2ac0dad792c2cd81a2409d 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "redux-throttle": "0.1.1", "rimraf": "^2.6.1", "scratch-audio": "0.1.0-prerelease.20180625202813", - "scratch-blocks": "0.1.0-prerelease.1531144787", + "scratch-blocks": "0.1.0-prerelease.1531338038", "scratch-l10n": "3.0.20180703181510", "scratch-paint": "0.2.0-prerelease.20180711151847", "scratch-render": "0.1.0-prerelease.20180618173030", diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx index 20c6d482ff5c9a927d731d84200192b514fe2269..4c849837570a5871794cab5f961c3cb647cfd187 100644 --- a/src/containers/blocks.jsx +++ b/src/containers/blocks.jsx @@ -212,6 +212,8 @@ class Blocks extends React.Component { this.props.vm.addListener('targetsUpdate', this.onTargetsUpdate); this.props.vm.addListener('EXTENSION_ADDED', this.handleExtensionAdded); this.props.vm.addListener('BLOCKSINFO_UPDATE', this.handleBlocksInfoUpdate); + this.props.vm.addListener('PERIPHERAL_CONNECTED', this.handleStatusButtonUpdate); + this.props.vm.addListener('PERIPHERAL_ERROR', this.handleStatusButtonUpdate); } detachVM () { this.props.vm.removeListener('SCRIPT_GLOW_ON', this.onScriptGlowOn); @@ -223,6 +225,8 @@ class Blocks extends React.Component { this.props.vm.removeListener('targetsUpdate', this.onTargetsUpdate); this.props.vm.removeListener('EXTENSION_ADDED', this.handleExtensionAdded); this.props.vm.removeListener('BLOCKSINFO_UPDATE', this.handleBlocksInfoUpdate); + this.props.vm.removeListener('PERIPHERAL_CONNECTED', this.handleStatusButtonUpdate); + this.props.vm.removeListener('PERIPHERAL_ERROR', this.handleStatusButtonUpdate); } updateToolboxBlockValue (id, value) { @@ -357,8 +361,8 @@ class Blocks extends React.Component { handleConnectionModalClose () { this.setState({connectionModal: null}); } - handleStatusButtonUpdate (extensionId, status) { - this.ScratchBlocks.updateStatusButton(this.workspace, extensionId, status); + handleStatusButtonUpdate () { + this.ScratchBlocks.refreshStatusButtons(this.workspace); } handlePromptCallback (input, optionSelection) { this.state.prompt.callback(input, optionSelection, diff --git a/src/containers/connection-modal.jsx b/src/containers/connection-modal.jsx index b256b03095835eca16d1d33520a8185fbe6b7461..ffb5c6ddf5c3b4ec05d61d1cbca8b7c05ac13d3d 100644 --- a/src/containers/connection-modal.jsx +++ b/src/containers/connection-modal.jsx @@ -56,13 +56,13 @@ class ConnectionModal extends React.Component { this.props.onCancel(); } handleError () { - this.props.onStatusButtonUpdate(this.props.extensionId, 'not ready'); + this.props.onStatusButtonUpdate(); this.setState({ phase: PHASES.error }); } handleConnected () { - this.props.onStatusButtonUpdate(this.props.extensionId, 'ready'); + this.props.onStatusButtonUpdate(); this.setState({ phase: PHASES.connected }); diff --git a/src/lib/blocks.js b/src/lib/blocks.js index c1bde0ff2e69c310977c84308cd73c802655d28f..f6b78b68ee4a325c5d03701e8d484466ba856f0c 100644 --- a/src/lib/blocks.js +++ b/src/lib/blocks.js @@ -208,5 +208,12 @@ export default function (vm) { return monitoredBlock ? monitoredBlock.isMonitored : false; }; + ScratchBlocks.FlyoutExtensionCategoryHeader.getExtensionState = function (extensionId) { + if (vm.getPeripheralIsConnected(extensionId)) { + return ScratchBlocks.StatusButtonState.READY; + } + return ScratchBlocks.StatusButtonState.NOT_READY; + }; + return ScratchBlocks; }