import React from 'react';
import { connect } from 'react-redux';
import { checkSession } from 'actions/session';
import { loadSavedLayout } from 'actions/workspaces';
import { loadTutorials } from 'actions/tutorials';
import Modal from 'components/ui/modal/Modal';

// A route handler that contains the entirety of the application.
class Site extends React.Component {
  componentDidMount() {
    const { dispatch } = this.props;
    dispatch(checkSession());
    loadSavedLayout();
    loadTutorials();
  }

  render() {
    const { children, location } = this.props;
    const modal = location.query ? location.query.modal : null;

    return (
      <div id="site">
        {modal ? <Modal type={modal} /> : null}
        {children}
      </div>
    );
  }
}

Site.propTypes = {
  children: React.PropTypes.object,
  dispatch: React.PropTypes.func.isRequired,
  location: React.PropTypes.object
};

export default connect()(Site);
