From 0d09d870d9adf789232a5e6165f44c605839833a Mon Sep 17 00:00:00 2001 From: Joffrey BION Date: Fri, 3 May 2019 01:27:22 +0200 Subject: Convert reducers to typescript --- frontend/src/redux/currentGame.ts | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 frontend/src/redux/currentGame.ts (limited to 'frontend/src/redux/currentGame.ts') diff --git a/frontend/src/redux/currentGame.ts b/frontend/src/redux/currentGame.ts new file mode 100644 index 00000000..76006677 --- /dev/null +++ b/frontend/src/redux/currentGame.ts @@ -0,0 +1,41 @@ +import { combineReducers } from 'redux'; +import { ApiPlayerTurnInfo, ApiTable } from '../api/model'; +import { GlobalState } from '../reducers'; +import { Action } from './actions/all'; +import { TABLE_UPDATE_RECEIVED, TURN_INFO_RECEIVED } from './actions/game'; + +export type CurrentGameState = { + turnInfo: ApiPlayerTurnInfo | null; + table: ApiTable | null; +} + +export function createCurrentGameReducer() { + return combineReducers({ + turnInfo: turnInfoReducer, + table: tableUpdatesReducer, + }); +} + +const turnInfoReducer = (state: ApiPlayerTurnInfo | null = null, action: Action) => { + switch (action.type) { + case TURN_INFO_RECEIVED: + return action.turnInfo; + case TABLE_UPDATE_RECEIVED: + return null; + default: + return state; + } +}; + +const tableUpdatesReducer = (state: ApiTable | null = null, action: Action) => { + switch (action.type) { + case TURN_INFO_RECEIVED: + return action.turnInfo.table; + case TABLE_UPDATE_RECEIVED: + return action.table; + default: + return state; + } +}; + +export const getCurrentTurnInfo = (state: GlobalState): ApiPlayerTurnInfo | null => state.currentGame.turnInfo; -- cgit