import React from 'react';
import { connect } from 'react-redux';
import { routeActions } from 'redux-simple-router';

import PurchaseConfirmation from './PurchaseConfirmation';
import BetaHasEnded from './BetaHasEnded';

class Modal extends React.Component {
  constructor(props) {
    super(props);
  }

  proceed(next) {
    this.props.dispatch(routeActions.replace(next));
  }

  handleModal() {
    const { type, session } = this.props;

    switch (type) {
    case 'purchase_confirmation':
      return (<PurchaseConfirmation proceed={(next) => this.proceed(next)} email={this.props.session.getIn(['user', 'email'])} />);
    case 'beta_has_ended':
      return (<BetaHasEnded proceed={(next) => this.proceed(next)}/>);
    default:
      return null;
    }
  }

  render() {
    return (
      <div className="modal">
        {this.handleModal()}
      </div>
    );
  }
}

function selectSession(state) {
  return {
    session: state.session
  };
}

Modal.propTypes = {
  type: React.PropTypes.string,
  session: React.PropTypes.object,
  dispatch: React.PropTypes.func.isRequired
};
export default connect(selectSession)(Modal);
