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-dom": "0.14.7",
"react-redux": "4.4.0", "react-redux": "4.4.0",
"redux": "3.3.1", "redux": "3.3.1",
"redux-form": "~4.2.0"
"redux-form": "~4.2.0",
"redux-thunk": "~2.0.1"
}, },
"devDependencies": { "devDependencies": {
"babel-cli": "6.5.1", "babel-cli": "6.5.1",


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

@ -17,7 +17,7 @@ export default {
type: SOCKET_SET_ERROR type: SOCKET_SET_ERROR
}), }),
onopen: event => ({
onopen: event => (dispatch, getState) => ({
type: SOCKET_SET_OPEN 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 {reduxForm} from "redux-form";
import { STATE_CLOSED } from "../constants/socket"; import { STATE_CLOSED } from "../constants/socket";
import ControlRequest from "../utils/ControlRequest";
const ConnectForm = (props) => { const ConnectForm = (props) => {
const { fields: { url }, handleSubmit, socket, socketOpen } = props;
const { fields: { url }, handleSubmit, socket, socketActions } = props;
const submit = (values, dispatch) => { const submit = (values, dispatch) => {
dispatch(socketOpen(values.url));
dispatch(socketActions.open(values.url));
}; };
return ( return (
<form onSubmit={handleSubmit(submit)}> <form onSubmit={handleSubmit(submit)}>
@ -24,7 +24,7 @@ ConnectForm.propTypes = {
fields: PropTypes.object.isRequired, fields: PropTypes.object.isRequired,
handleSubmit: PropTypes.func.isRequired, handleSubmit: PropTypes.func.isRequired,
socket: PropTypes.object.isRequired, socket: PropTypes.object.isRequired,
socketOpen: PropTypes.func.isRequired
socketActions: PropTypes.object.isRequired
}; };
export default reduxForm({ export default reduxForm({


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

@ -11,7 +11,7 @@ const SolsticeApp = (props) => {
return ( return (
<main> <main>
<ConnectForm socket={socket} <ConnectForm socket={socket}
socketOpen={actions.socketActions.open}/>
socketActions={actions.socketActions}/>
<SocketStatusPane {...socket} /> <SocketStatusPane {...socket} />
</main> </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. //This boilerplate file is likely to be the same for each project that uses Redux.
//With Redux, the actual stores are in /reducers. //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 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 { } else {
store = createStore(rootReducer, initialState);
createStoreModded = createStore;
} }
const store = createStoreModded(rootReducer, initialState, enhancer);
if (module.hot) { if (module.hot) {
// Enable Webpack hot module replacement for reducers // Enable Webpack hot module replacement for reducers
module.hot.accept('../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') { if (process.env.NODE_ENV === 'production') {
module.exports = require('./configureStore.prod');
configureStore = require('./configureStore.prod').default;
} else { } 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 { createStore } from 'redux';
import rootReducer from '../reducers'; 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