Browse Source

Add redux-thunk.

pull/1/head
Titouan Rigoudy 9 years ago
parent
commit
8b19a2f5bb
9 changed files with 37 additions and 26 deletions
  1. +2
    -1
      package.json
  2. +1
    -1
      src/actions/socketHandlerActions.js
  3. +4
    -4
      src/components/ConnectForm.js
  4. +1
    -1
      src/components/SolsticeApp.js
  5. +8
    -6
      src/store/configureStore.dev.js
  6. +8
    -2
      src/store/configureStore.js
  7. +2
    -2
      src/store/configureStore.prod.js
  8. +0
    -9
      src/utils/ControlMessage.js
  9. +11
    -0
      src/utils/ControlRequest.js

+ 2
- 1
package.json View File

@ -24,7 +24,8 @@
"react-dom": "0.14.7",
"react-redux": "4.4.0",
"redux": "3.3.1",
"redux-form": "~4.2.0"
"redux-form": "~4.2.0",
"redux-thunk": "~2.0.1"
},
"devDependencies": {
"babel-cli": "6.5.1",


+ 1
- 1
src/actions/socketHandlerActions.js View File

@ -17,7 +17,7 @@ export default {
type: SOCKET_SET_ERROR
}),
onopen: event => ({
onopen: event => (dispatch, getState) => ({
type: SOCKET_SET_OPEN
}),


+ 4
- 4
src/components/ConnectForm.js View File

@ -2,12 +2,12 @@ import React, {PropTypes} from "react";
import {reduxForm} from "redux-form";
import { STATE_CLOSED } from "../constants/socket";
import ControlRequest from "../utils/ControlRequest";
const ConnectForm = (props) => {
const { fields: { url }, handleSubmit, socket, socketOpen } = props;
const { fields: { url }, handleSubmit, socket, socketActions } = props;
const submit = (values, dispatch) => {
dispatch(socketOpen(values.url));
dispatch(socketActions.open(values.url));
};
return (
<form onSubmit={handleSubmit(submit)}>
@ -24,7 +24,7 @@ ConnectForm.propTypes = {
fields: PropTypes.object.isRequired,
handleSubmit: PropTypes.func.isRequired,
socket: PropTypes.object.isRequired,
socketOpen: PropTypes.func.isRequired
socketActions: PropTypes.object.isRequired
};
export default reduxForm({


+ 1
- 1
src/components/SolsticeApp.js View File

@ -11,7 +11,7 @@ const SolsticeApp = (props) => {
return (
<main>
<ConnectForm socket={socket}
socketOpen={actions.socketActions.open}/>
socketActions={actions.socketActions}/>
<SocketStatusPane {...socket} />
</main>
);


+ 8
- 6
src/store/configureStore.dev.js View File

@ -2,17 +2,19 @@
//This boilerplate file is likely to be the same for each project that uses Redux.
//With Redux, the actual stores are in /reducers.
import { createStore } from 'redux';
import rootReducer from '../reducers';
import { createStore } from "redux";
import rootReducer from "../reducers";
export default function configureStore(initialState) {
let store;
export default function configureStore(initialState, enhancer) {
let createStoreModded;
if (window.devToolsExtension) { //Enable Redux devtools if the extension is installed in developer's browser
store = window.devToolsExtension()(createStore)(rootReducer, initialState);
createStoreModded = window.devToolsExtension()(createStore);
} else {
store = createStore(rootReducer, initialState);
createStoreModded = createStore;
}
const store = createStoreModded(rootReducer, initialState, enhancer);
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers', () => {


+ 8
- 2
src/store/configureStore.js View File

@ -1,5 +1,11 @@
import { applyMiddleware } from "redux";
import thunk from "redux-thunk";
let configureStore;
if (process.env.NODE_ENV === 'production') {
module.exports = require('./configureStore.prod');
configureStore = require('./configureStore.prod').default;
} else {
module.exports = require('./configureStore.dev');
configureStore = require('./configureStore.dev').default;
}
export default () => configureStore(undefined, applyMiddleware(thunk));

+ 2
- 2
src/store/configureStore.prod.js View File

@ -1,6 +1,6 @@
import { createStore } from 'redux';
import rootReducer from '../reducers';
export default function configureStore(initialState) {
return createStore(rootReducer, initialState);
export default function configureStore(initialState, enhancer) {
return createStore(rootReducer, initialState, enhancer);
}

+ 0
- 9
src/utils/ControlMessage.js View File

@ -1,9 +0,0 @@
export default {
login: (username, password) => ({
"variant": "LoginRequest",
"fields": [{
"username": username,
"password": password,
}]
})
};

+ 11
- 0
src/utils/ControlRequest.js View File

@ -0,0 +1,11 @@
export default {
loginStatus: () => ({
"variant": "LoginStatusRequest",
"fields": []
}),
roomList: () => ({
"variant": "RoomListRequest",
"fields": []
})
};

Loading…
Cancel
Save