summaryrefslogtreecommitdiff
path: root/frontend/src/redux/games.js
diff options
context:
space:
mode:
authorVictor Chabbert <chabbertvi@eisti.eu>2017-05-28 20:42:21 +0200
committerVictor Chabbert <chabbertvi@eisti.eu>2017-05-28 20:42:21 +0200
commit0bf423172ffb2e4030b521b0985d133cb5c61dd9 (patch)
tree0c24821770274a414f80b3092d5be54902c042d9 /frontend/src/redux/games.js
parentFix proxy not working since CRA upgrade (diff)
downloadseven-wonders-0bf423172ffb2e4030b521b0985d133cb5c61dd9.tar.gz
seven-wonders-0bf423172ffb2e4030b521b0985d133cb5c61dd9.tar.bz2
seven-wonders-0bf423172ffb2e4030b521b0985d133cb5c61dd9.zip
Move to immutable with Records
Diffstat (limited to 'frontend/src/redux/games.js')
-rw-r--r--frontend/src/redux/games.js29
1 files changed, 11 insertions, 18 deletions
diff --git a/frontend/src/redux/games.js b/frontend/src/redux/games.js
index 9ef0e7cd..d5953db1 100644
--- a/frontend/src/redux/games.js
+++ b/frontend/src/redux/games.js
@@ -1,4 +1,5 @@
-import Immutable from 'seamless-immutable';
+import { fromJS } from 'immutable';
+import GamesState from '../models/games';
export const types = {
UPDATE_GAMES: 'GAME/UPDATE_GAMES',
@@ -10,37 +11,29 @@ export const types = {
};
export const actions = {
- updateGames: games => ({ type: types.UPDATE_GAMES, games: Immutable(games) }),
+ updateGames: games => ({ type: types.UPDATE_GAMES, games: fromJS(games) }),
requestJoinGame: gameId => ({ type: types.REQUEST_JOIN_GAME, gameId }),
requestCreateGame: gameName => ({
type: types.REQUEST_CREATE_GAME,
gameName,
}),
requestStartGame: () => ({ type: types.REQUEST_START_GAME }),
- enterLobby: lobby => ({ type: types.ENTER_LOBBY, lobby: Immutable(lobby) }),
+ enterLobby: lobby => ({ type: types.ENTER_LOBBY, lobby: fromJS(lobby) }),
enterGame: () => ({ type: types.ENTER_GAME }),
};
-const initialState = Immutable.from({
- all: {},
- current: '',
-});
-
-export default (state = initialState, action) => {
+export default (state = new GamesState(), action) => {
switch (action.type) {
case types.UPDATE_GAMES:
- return Immutable.merge(state, { all: action.games }, { deep: true });
+ return state.addGames(action.games);
case types.ENTER_LOBBY:
- return state.set('current', action.lobby.id);
+ return state.set('current', action.lobby.get('id'));
default:
return state;
}
};
-export const getAllGamesById = state => state.games.all;
-export const getAllGames = state => {
- let gamesById = getAllGamesById(state);
- return Object.keys(gamesById).map(k => gamesById[k]);
-};
-export const getGame = (state, id) => getAllGamesById(state)[id];
-export const getCurrentGame = state => getGame(state, state.games.current);
+export const getAllGamesById = games => games.all;
+export const getAllGames = games => getAllGamesById(games).toList();
+export const getGame = (games, id) => getAllGamesById(games).get(`${id}`);
+export const getCurrentGame = games => getGame(games, games.current);
bgstack15