From 98a4f832b90fde146db881b80032b8fae858648c Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 11 Mar 2016 14:05:04 +0100 Subject: [PATCH] Add LoginStatusPane. --- src/actions/socketHandlerActions.js | 14 ++-- src/components/ConnectForm.js | 12 ++-- src/components/SolsticeApp.js | 11 +-- src/constants/login.js | 4 ++ src/containers/LoginStatusPane.js | 104 +++++++++++++++++++++++++++ src/reducers/index.js | 2 + src/reducers/login.js | 56 +++++++++++++++ src/reducers/socket.js | 6 +- src/utils/propTypeRequiredWrapper.js | 15 ++++ src/utils/propTypeSymbol.js | 20 ++++++ 10 files changed, 223 insertions(+), 21 deletions(-) create mode 100644 src/constants/login.js create mode 100644 src/containers/LoginStatusPane.js create mode 100644 src/reducers/login.js create mode 100644 src/utils/propTypeRequiredWrapper.js create mode 100644 src/utils/propTypeSymbol.js diff --git a/src/actions/socketHandlerActions.js b/src/actions/socketHandlerActions.js index 2bccdaa..a4735dd 100644 --- a/src/actions/socketHandlerActions.js +++ b/src/actions/socketHandlerActions.js @@ -13,18 +13,18 @@ export default { } }), - onerror: event => ({ - type: SOCKET_SET_ERROR - }), + onerror: event => ({ type: SOCKET_SET_ERROR }), - onopen: event => (dispatch, getState) => ({ - type: SOCKET_SET_OPEN - }), + onopen: event => ({ type: SOCKET_SET_OPEN }), onmessage: event => { const action = { type: SOCKET_RECEIVE_MESSAGE }; try { - action.payload = JSON.parse(event.data); + const { variant, fields: [data] } = JSON.parse(event.data); + if (typeof variant === "undefined") { + throw new Error('Missing "variant" field in control response'); + } + action.payload = { variant, data }; } catch (err) { action.error = true; action.payload = err; diff --git a/src/components/ConnectForm.js b/src/components/ConnectForm.js index 2b8d2f6..e8952a4 100644 --- a/src/components/ConnectForm.js +++ b/src/components/ConnectForm.js @@ -5,12 +5,12 @@ import { STATE_CLOSED } from "../constants/socket"; import ControlRequest from "../utils/ControlRequest"; const ConnectForm = (props) => { - const { fields: { url }, handleSubmit, socket, socketActions } = props; - const submit = (values, dispatch) => { - dispatch(socketActions.open(values.url)); - }; + const { fields: { url }, handleSubmit, socket, socketOpen } = props; + + const onSubmit = handleSubmit((values) => socketOpen(values.url)); + return ( -
+