diff options
author | Joffrey BION <joffrey.bion@gmail.com> | 2018-06-10 15:41:42 +0200 |
---|---|---|
committer | Joffrey BION <joffrey.bion@gmail.com> | 2018-06-10 15:46:50 +0200 |
commit | bd212b997b2c7293f98db6a6be2b2900da87af6f (patch) | |
tree | cd97259ebef04d63eb1c6bdf7b93e3bcfb75234d /frontend/src/components | |
parent | Remove unnecessary prop types exports (diff) | |
download | seven-wonders-bd212b997b2c7293f98db6a6be2b2900da87af6f.tar.gz seven-wonders-bd212b997b2c7293f98db6a6be2b2900da87af6f.tar.bz2 seven-wonders-bd212b997b2c7293f98db6a6be2b2900da87af6f.zip |
Finish moving components out of /scenes package
Diffstat (limited to 'frontend/src/components')
-rw-r--r-- | frontend/src/components/Application.jsx | 14 | ||||
-rw-r--r-- | frontend/src/components/game-browser/GameBrowser.jsx | 2 | ||||
-rw-r--r-- | frontend/src/components/game-browser/PlayerInfo.jsx (renamed from frontend/src/components/PlayerInfo.jsx) | 4 | ||||
-rw-r--r-- | frontend/src/components/lobby/Lobby.jsx | 51 | ||||
-rw-r--r-- | frontend/src/components/lobby/PlayerList.jsx (renamed from frontend/src/components/PlayerList.jsx) | 2 |
5 files changed, 69 insertions, 4 deletions
diff --git a/frontend/src/components/Application.jsx b/frontend/src/components/Application.jsx new file mode 100644 index 00000000..d7e1738c --- /dev/null +++ b/frontend/src/components/Application.jsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { Redirect, Route, Switch } from 'react-router-dom'; +import { GameBrowser } from './game-browser/GameBrowser'; +import { Lobby } from './lobby/Lobby'; +import { Home } from './home/Home'; + +export const Application = () => ( + <Switch> + <Route path="/games" component={GameBrowser} /> + <Route path="/lobby" component={Lobby} /> + <Route path="/" component={Home} /> + <Redirect to="/" /> + </Switch> +); diff --git a/frontend/src/components/game-browser/GameBrowser.jsx b/frontend/src/components/game-browser/GameBrowser.jsx index 3455f429..10d823b4 100644 --- a/frontend/src/components/game-browser/GameBrowser.jsx +++ b/frontend/src/components/game-browser/GameBrowser.jsx @@ -4,7 +4,7 @@ import React, { Component } from 'react'; import { connect } from 'react-redux'; import { Flex } from 'reflexbox'; import { GameList } from './GameList'; -import { PlayerInfo } from '../PlayerInfo'; +import { PlayerInfo } from './PlayerInfo'; import { actions } from '../../redux/games'; type GameBrowserProps = { diff --git a/frontend/src/components/PlayerInfo.jsx b/frontend/src/components/game-browser/PlayerInfo.jsx index afe03055..2f29ea60 100644 --- a/frontend/src/components/PlayerInfo.jsx +++ b/frontend/src/components/game-browser/PlayerInfo.jsx @@ -2,8 +2,8 @@ import { Text } from '@blueprintjs/core'; import React from 'react'; import { connect } from 'react-redux'; -import type { Player } from '../models/players'; -import { getCurrentPlayer } from '../redux/players'; +import type { Player } from '../../models/players'; +import { getCurrentPlayer } from '../../redux/players'; type PlayerInfoProps = { player: ?Player, diff --git a/frontend/src/components/lobby/Lobby.jsx b/frontend/src/components/lobby/Lobby.jsx new file mode 100644 index 00000000..ea865025 --- /dev/null +++ b/frontend/src/components/lobby/Lobby.jsx @@ -0,0 +1,51 @@ +//@flow +import { Button } from '@blueprintjs/core'; +import { List } from 'immutable'; +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import { PlayerList } from '../../components/lobby/PlayerList'; +import type { Game } from '../../models/games'; +import type { Player } from '../../models/players'; +import { actions, getCurrentGame } from '../../redux/games'; +import { getPlayers } from '../../redux/players'; + +export type LobbyProps = { + currentGame: Game, + players: List<Player>, + startGame: () => void, +} + +class LobbyPresenter extends Component<LobbyProps> { + getTitle() { + if (this.props.currentGame) { + return this.props.currentGame.name + ' — Lobby'; + } else { + return 'What are you doing here? You haven\'t joined a game yet!'; + } + } + + render() { + return ( + <div> + <h2>{this.getTitle()}</h2> + <PlayerList players={this.props.players} /> + <Button onClick={this.props.startGame}>Start Game</Button> + </div> + ); + } +} + +const mapStateToProps = state => { + const game = getCurrentGame(state.get('games')); + console.info(game); + return { + currentGame: game, + players: game ? getPlayers(state.get('players'), game.players) : new List(), + }; +}; + +const mapDispatchToProps = { + startGame: actions.requestStartGame, +}; + +export const Lobby = connect(mapStateToProps, mapDispatchToProps)(LobbyPresenter); diff --git a/frontend/src/components/PlayerList.jsx b/frontend/src/components/lobby/PlayerList.jsx index 64377476..db3d4418 100644 --- a/frontend/src/components/PlayerList.jsx +++ b/frontend/src/components/lobby/PlayerList.jsx @@ -3,7 +3,7 @@ import { Text } from '@blueprintjs/core'; import { List } from 'immutable'; import React from 'react'; import { Flex } from 'reflexbox'; -import { Player } from '../models/players'; +import { Player } from '../../models/players'; type PlayerListProps = { players: List<Player>; |