From 2b5ae5e368f509de79f5eac2e78ef9bab1ca4453 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Thu, 14 Apr 2016 18:13:51 +0200 Subject: [PATCH] Migrate RoomActions away from SOCKET_SEND_MESSAGE action. --- src/actions/RoomActions.js | 50 ++++++++++++++---------------------- src/components/RoomList.js | 8 +++--- src/constants/ActionTypes.js | 9 ++++--- src/reducers/socket.js | 31 ++++++++++++++++------ 4 files changed, 52 insertions(+), 46 deletions(-) diff --git a/src/actions/RoomActions.js b/src/actions/RoomActions.js index 2a6d243..9f05e6b 100644 --- a/src/actions/RoomActions.js +++ b/src/actions/RoomActions.js @@ -1,48 +1,36 @@ import { + ROOM_GET_LIST, ROOM_JOIN, ROOM_LEAVE, ROOM_MESSAGE, ROOM_SELECT } from "../constants/ActionTypes"; -import SocketActions from "./SocketActions"; - -import ControlRequest from "../utils/ControlRequest"; - export default ({ - getRoomList: () => SocketActions.send(ControlRequest.roomList()), + getList: () => ({ + type: ROOM_GET_LIST + }), - join: (room_name) => (dispatch) => { - dispatch({ - type: ROOM_JOIN, - payload: room_name - }); - dispatch(SocketActions.send(ControlRequest.roomJoin(room_name))); - }, + join: (room_name) => ({ + type: ROOM_JOIN, + payload: room_name + }), - leave: (room_name) => (dispatch) => { - dispatch({ - type: ROOM_LEAVE, - payload: room_name - }); - dispatch(SocketActions.send(ControlRequest.roomLeave(room_name))); - }, + leave: (room_name) => ({ + type: ROOM_LEAVE, + payload: room_name + }), select: (room_name) => ({ type: ROOM_SELECT, payload: room_name }), - sendMessage: (room_name, message) => (dispatch) => { - dispatch({ - type: ROOM_MESSAGE, - payload: { - room_name, - message - } - }); - dispatch(SocketActions.send( - ControlRequest.roomMessage(room_name, message) - )); - } + sendMessage: (room_name, message) => ({ + type: ROOM_MESSAGE, + payload: { + room_name, + message + } + }) }); diff --git a/src/components/RoomList.js b/src/components/RoomList.js index cccdb1e..64b0970 100644 --- a/src/components/RoomList.js +++ b/src/components/RoomList.js @@ -9,7 +9,7 @@ class RoomList extends React.Component { } componentDidMount() { - this.props.roomActions.getRoomList(); + this.props.roomActions.getList(); } render() { @@ -36,7 +36,7 @@ class RoomList extends React.Component { return (
- +
    {children}
); @@ -45,7 +45,9 @@ class RoomList extends React.Component { RoomList.propTypes = { rooms: PropTypes.object.isRequired, - roomActions: PropTypes.object.isRequired, + roomActions: PropTypes.shape({ + getList: PropTypes.func.isRequired + }).isRequired, selected: PropTypes.string }; diff --git a/src/constants/ActionTypes.js b/src/constants/ActionTypes.js index b19828d..58ea56e 100644 --- a/src/constants/ActionTypes.js +++ b/src/constants/ActionTypes.js @@ -11,7 +11,8 @@ export const SOCKET_SEND_MESSAGE = "SOCKET_SEND_MESSAGE"; export const LOGIN_GET_STATUS = "LOGIN_GET_STATUS"; // Room actions -export const ROOM_SELECT = "ROOM_SELECT"; -export const ROOM_JOIN = "ROOM_JOIN"; -export const ROOM_LEAVE = "ROOM_LEAVE"; -export const ROOM_MESSAGE = "ROOM_MESSAGE"; +export const ROOM_GET_LIST = "ROOM_GET_LIST"; +export const ROOM_SELECT = "ROOM_SELECT"; +export const ROOM_JOIN = "ROOM_JOIN"; +export const ROOM_LEAVE = "ROOM_LEAVE"; +export const ROOM_MESSAGE = "ROOM_MESSAGE"; diff --git a/src/reducers/socket.js b/src/reducers/socket.js index 9ad7148..273534c 100644 --- a/src/reducers/socket.js +++ b/src/reducers/socket.js @@ -9,22 +9,22 @@ const initialState = { state: STATE_CLOSED }; -export default (state = initialState, action) => { +export default (state = initialState, { type, payload }) => { const sendRequest = (controlRequest) => { try { state.socket.send(JSON.stringify(controlRequest)); } catch (err) { - console.log(`Socket error: failed to send ${action.payload}`); + console.log(`Socket error: failed to send ${controlRequest}`); } }; - switch (action.type) { + switch (type) { case types.SOCKET_SET_OPENING: { if (state.state !== STATE_CLOSED) { console.log("Cannot open socket, already open"); } - const { url, onopen, onclose, onerror, onmessage } = action.payload; + const { url, onopen, onclose, onerror, onmessage } = payload; const socket = new WebSocket(url); socket.onopen = onopen; socket.onclose = onclose; @@ -53,14 +53,29 @@ export default (state = initialState, action) => { console.log("Socket error"); return { ...state, state: state.socket.readyState }; - case types.SOCKET_SEND_MESSAGE: - sendRequest(action.payload); - return state; - case types.LOGIN_GET_STATUS: sendRequest(ControlRequest.loginStatus()); return state; + case types.ROOM_GET_LIST: + sendRequest(ControlRequest.roomList()); + return state; + + case types.ROOM_JOIN: + sendRequest(ControlRequest.roomJoin(payload)); + return state; + + case types.ROOM_LEAVE: + sendRequest(ControlRequest.roomLeave(payload)); + return state; + + case types.ROOM_MESSAGE: + { + const { room_name, message } = payload; + sendRequest(ControlRequest.roomMessage(room_name, message)); + return state; + } + default: return state; }