/ embark-ui / src / containers / ContractLayoutContainer.js
ContractLayoutContainer.js
 1  import React, {Component} from 'react';
 2  import {connect} from 'react-redux';
 3  import PropTypes from 'prop-types';
 4  import {withRouter} from 'react-router-dom';
 5  
 6  import {contract as contractAction} from '../actions';
 7  import ContractLayout from '../components/ContractLayout';
 8  import {getContract} from "../reducers/selectors";
 9  
10  class ContractLayoutContainer extends Component {
11    componentDidMount() {
12      this.props.fetchContract(this.props.match.params.contractName);
13    }
14  
15    render() {
16      if (this.props.contract){
17        return <ContractLayout contract={this.props.contract}/>;
18      } else {
19        return <React.Fragment />;
20      }
21    }
22  }
23  
24  function mapStateToProps(state, props) {
25    return {
26      contract: getContract(state, props.match.params.contractName),
27      error: state.errorMessage,
28      loading: state.loading
29    };
30  }
31  
32  ContractLayoutContainer.propTypes = {
33    match: PropTypes.object,
34    contract: PropTypes.object,
35    fetchContract: PropTypes.func,
36    error: PropTypes.string
37  };
38  
39  export default withRouter(connect(
40    mapStateToProps,
41    {
42      fetchContract: contractAction.request
43    }
44  )(ContractLayoutContainer));