// Copyright 2020 Thomas Hintz
//
// This file is part of the Alpha Centauri Farming project.
//
// The Alpha Centauri Farming project is free software: you can
// redistribute it and/or modify it under the terms of the GNU General
// Public License as published by the Free Software Foundation, either
// version 3 of the License, or (at your option) any later version.
//
// The Alpha Centauri Farming project is distributed in the hope that
// it will be useful, but WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE.  See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with the Alpha Centauri Farming project.  If not, see
// <https://www.gnu.org/licenses/>.

import React, { Fragment } from 'react'
import { connect } from 'react-redux'

import Cookies from 'cookies-js'

import { GroupBox, Row, Col, Button } from '../widgets.jsx'
import { showNewGame, showJoinGame } from '../app/actions.js'

class CreateOrJoin extends React.Component {
    signOut = (e) => {
        e.preventDefault();
        this.props.signOut();
        Cookies.expire('awful-cookie');
    }

    render() {
        return (
            <Fragment>
                <Button size='large' className='shadow' onClick={this.props.showNewGame}>
                    New Game
                </Button>
                {(this.props.start.start.games.length > 0) || (this.props.start.start.openGames.length > 0)  ? (
                     <Button size='large' className='shadow' onClick={this.props.showJoinGame}>
                         Join Game
                     </Button>
                ) : (<Fragment />)}
                {this.props.start.start.user ? (
                     <Button size='large' className='shadow sign-out-button' onClick={this.signOut}>
                         Sign Out
                     </Button>
                ) : (<></>)}
            </Fragment>
        );
    }
}

export default connect(
    state => state,
    { showNewGame,
      showJoinGame
    }
)(CreateOrJoin)
