diff --git a/src/actions/types.js b/src/actions/types.js index 26cd445..c0be6c2 100644 --- a/src/actions/types.js +++ b/src/actions/types.js @@ -1,6 +1,5 @@ export const NEW_CODE = 'NEW_CODE'; export const CHANGE_WORKSPACE = 'CHANGE_WORKSPACE'; -export const NEW_WORKSPACE = 'NEW_WORKSPACE'; export const CREATE_BLOCK = 'CREATE_BLOCK'; export const MOVE_BLOCK = 'MOVE_BLOCK'; export const CHANGE_BLOCK = 'CHANGE_BLOCK'; diff --git a/src/actions/workspaceActions.js b/src/actions/workspaceActions.js index f692563..7b0d063 100644 --- a/src/actions/workspaceActions.js +++ b/src/actions/workspaceActions.js @@ -1,4 +1,4 @@ -import { NEW_CODE, CHANGE_WORKSPACE, NEW_WORKSPACE, CREATE_BLOCK, MOVE_BLOCK, CHANGE_BLOCK, DELETE_BLOCK, CLEAR_STATS } from './types'; +import { NEW_CODE, CHANGE_WORKSPACE, CREATE_BLOCK, MOVE_BLOCK, CHANGE_BLOCK, DELETE_BLOCK, CLEAR_STATS } from './types'; import * as Blockly from 'blockly/core'; @@ -8,22 +8,12 @@ export const workspaceChange = () => (dispatch) => { }) } -export const initWorkspace = (workspace) => (dispatch) => { - dispatch({ - type: NEW_WORKSPACE, - payload: workspace - }); -} export const onChangeWorkspace = (event) => (dispatch, getState) => { - const workspace = Blockly.getMainWorkspace(); - dispatch({ - type: NEW_WORKSPACE, - payload: workspace - }); dispatch({ type: CHANGE_WORKSPACE, }) + const workspace = Blockly.getMainWorkspace(); var code = getState().workspace.code; code.arduino = Blockly.Arduino.workspaceToCode(workspace); var xmlDom = Blockly.Xml.workspaceToDom(workspace); @@ -78,11 +68,3 @@ export const clearStats = () => (dispatch) => { payload: stats }); }; - - -export const setWorkspace = (workspace) => (dispatch, getState) => { - dispatch({ - type: NEW_WORKSPACE, - payload: {new: workspace, old: getState().workspace.new} - }); -}; diff --git a/src/components/ClearWorkspace.js b/src/components/ClearWorkspace.js index c22672e..5b48648 100644 --- a/src/components/ClearWorkspace.js +++ b/src/components/ClearWorkspace.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { clearStats, workspaceChange } from '../actions/workspaceActions'; +import * as Blockly from 'blockly/core'; + import ListItem from '@material-ui/core/ListItem'; import ListItemIcon from '@material-ui/core/ListItemIcon'; import ListItemText from '@material-ui/core/ListItemText'; @@ -13,15 +15,11 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; class ClearWorkspace extends Component { clearWorkspace = () => { - if(this.props.workspace){ - this.props.workspace.clear(); - this.props.workspace.options.maxBlocks = Infinity; - this.props.workspaceChange(); - this.props.clearStats(); - } - else { - alert() - } + const workspace = Blockly.getMainWorkspace(); + workspace.clear(); + workspace.options.maxBlocks = Infinity; + this.props.workspaceChange(); + this.props.clearStats(); } render() { @@ -35,13 +33,9 @@ class ClearWorkspace extends Component { } ClearWorkspace.propTypes = { - workspace: PropTypes.object.isRequired, clearStats: PropTypes.func.isRequired, workspaceChange: PropTypes.func.isRequired }; -const mapStateToProps = state => ({ - workspace: state.workspace.workspace -}); -export default connect(mapStateToProps, { clearStats, workspaceChange })(ClearWorkspace); +export default connect(null, { clearStats, workspaceChange })(ClearWorkspace); diff --git a/src/components/Home.js b/src/components/Home.js index 1082845..de16f85 100644 --- a/src/components/Home.js +++ b/src/components/Home.js @@ -1,8 +1,7 @@ import React, { Component } from 'react'; - import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import { onChangeWorkspace, initWorkspace } from '../actions/workspaceActions'; +import { onChangeWorkspace } from '../actions/workspaceActions'; import WorkspaceStats from './WorkspaceStats'; import WorkspaceFunc from './WorkspaceFunc'; @@ -16,7 +15,7 @@ import './Blockly/blocks/index'; import './Blockly/generator/index'; -class Home extends React.Component { +class Home extends Component { constructor(props) { super(props); @@ -24,8 +23,7 @@ class Home extends React.Component { } componentDidMount() { - let workspace = Blockly.getMainWorkspace(); - this.props.initWorkspace(workspace); + const workspace = Blockly.getMainWorkspace(); workspace.addChangeListener((event) => { this.props.onChangeWorkspace(event); }); @@ -72,22 +70,9 @@ class Home extends React.Component { }; } -WorkspaceStats.propTypes = { - workspace: PropTypes.object.isRequired, - create: PropTypes.number.isRequired, - change: PropTypes.number.isRequired, - delete: PropTypes.number.isRequired, - move: PropTypes.number.isRequired, - worskpaceChange: PropTypes.number.isRequired +Home.propTypes = { + onChangeWorkspace: PropTypes.func.isRequired }; -const mapStateToProps = state => ({ - workspace: state.workspace.workspace, - create: state.workspace.stats.create, - change: state.workspace.stats.change, - delete: state.workspace.stats.delete, - move: state.workspace.stats.move, - worskpaceChange: state.workspace.change -}); -export default connect(null, { onChangeWorkspace, initWorkspace })(Home); +export default connect(null, { onChangeWorkspace })(Home); diff --git a/src/components/MaxBlocks.js b/src/components/MaxBlocks.js index 01e8caa..4a0b86c 100644 --- a/src/components/MaxBlocks.js +++ b/src/components/MaxBlocks.js @@ -43,4 +43,8 @@ class MaxBlocks extends Component { }; } +MaxBlocks.propTypes = { + workspaceChange: PropTypes.func.isRequired +}; + export default connect(null, { workspaceChange })(MaxBlocks); diff --git a/src/components/WorkspaceStats.js b/src/components/WorkspaceStats.js index baddbcd..51ec1fa 100644 --- a/src/components/WorkspaceStats.js +++ b/src/components/WorkspaceStats.js @@ -24,13 +24,14 @@ const styles = (theme) => ({ class WorkspaceStats extends Component { render() { - const remainingBlocksInfinity = this.props.workspace ? this.props.workspace.remainingCapacity() !== Infinity : null; + const workspace = Blockly.getMainWorkspace(); + const remainingBlocksInfinity = workspace ? workspace.remainingCapacity() !== Infinity : null; return (