@@ -92,12 +92,13 @@ class Pairing extends React.Component {
- )
+ );
}
}
const mapStateProps = state => ({
- pairing: state.pairings.pairing
-})
+ pairing: state.pairings.pairing,
+ loading: state.pairings.loading_pairing
+});
-export default connect(mapStateProps, { fetchPairing })(Pairing)
+export default connect(mapStateProps, { fetchPairing })(Pairing);
diff --git a/rojak-ui-web/src/app/pairing/Pairings.js b/rojak-ui-web/src/app/pairing/Pairings.js
index 487d84b..0e88476 100644
--- a/rojak-ui-web/src/app/pairing/Pairings.js
+++ b/rojak-ui-web/src/app/pairing/Pairings.js
@@ -1,8 +1,8 @@
-import React from 'react'
-import { Link } from 'react-router'
-import { connect } from 'react-redux'
-import SimpleList from '../kit/SimpleList'
-import { fetchPairings } from './actions'
+import React from 'react';
+import { Link } from 'react-router';
+import { connect } from 'react-redux';
+import SimpleList from '../kit/SimpleList';
+import { fetchPairings } from './actions';
class Pairings extends React.Component {
static propTypes = {
@@ -11,7 +11,7 @@ class Pairings extends React.Component {
}
componentWillMount () {
- this.props.fetchPairings()
+ this.props.fetchPairings();
}
render () {
@@ -23,10 +23,10 @@ class Pairings extends React.Component {
- ))
+ ));
return (
-
Pasangan
+ Pasangan
@@ -38,12 +38,12 @@ class Pairings extends React.Component {
- )
+ );
}
}
const mapStateToProps = state => ({
pairings: state.pairings
-})
+});
-export default connect(mapStateToProps, { fetchPairings })(Pairings)
+export default connect(mapStateToProps, { fetchPairings })(Pairings);
diff --git a/rojak-ui-web/src/app/pairing/actions.js b/rojak-ui-web/src/app/pairing/actions.js
index 7c4905c..68791ea 100644
--- a/rojak-ui-web/src/app/pairing/actions.js
+++ b/rojak-ui-web/src/app/pairing/actions.js
@@ -1,27 +1,14 @@
-import { ajax } from '../services'
+import { ajax } from '../services';
-export const SET_PAIRINGS = 'SET_PAIRINGS'
-export const SET_PAIRING = 'SET_PAIRING'
+export const SET_PAIRINGS = 'SET_PAIRINGS';
+export const SET_PAIRING = 'SET_PAIRING';
-export const setPairings = pairings => ({
+export const fetchPairings = () => ({
type: SET_PAIRINGS,
- payload: { pairings }
-})
+ payload: ajax.get('pairings')
+});
-export const setPairing = pairing => ({
+export const fetchPairing = (id) => ({
type: SET_PAIRING,
- payload: { pairing }
-})
-
-export const fetchPairings = () => dispatch => {
- ajax.get('pairings').then((res) => {
- dispatch(setPairings(res.data))
- })
-}
-
-export const fetchPairing = id => dispatch => {
- ajax.get(`pairings/${id}?embed[]=overall_sentiments&embed[]=sentiments_by_media`).then((res) => {
- dispatch(setPairing(res.data))
- })
-}
-
+ payload: ajax.get(`pairings/${id}?embed[]=overall_sentiments&embed[]=sentiments_by_media`)
+});
diff --git a/rojak-ui-web/src/app/pairing/reducer.js b/rojak-ui-web/src/app/pairing/reducer.js
index 86c58b7..7e96e96 100644
--- a/rojak-ui-web/src/app/pairing/reducer.js
+++ b/rojak-ui-web/src/app/pairing/reducer.js
@@ -1,18 +1,35 @@
-import { SET_PAIRING, SET_PAIRINGS } from './actions'
+import { SET_PAIRING, SET_PAIRINGS } from './actions';
const initialState = {
list: [],
- pairing: {}
-}
+ pairing: {},
+ error: null,
+ loading_list: false,
+ loading_pairing: false
+};
export default (state = initialState, action = {}) => {
const { type, payload } = action
switch (type) {
- case SET_PAIRINGS:
- return Object.assign({}, state, { list: payload.pairings })
- case SET_PAIRING:
- return Object.assign({}, state, { pairing: payload.pairing })
+ case `${SET_PAIRINGS}_PENDING`:
+ // return Object.assign({}, state, { loading_list: true });
+ return { ...state, loading_list: true };
+ case `${SET_PAIRINGS}_FULFILLED`:
+ // return Object.assign({}, state, { loading_list: false, list: payload.data });
+ return { ...state, loading_list: false, list: payload.data };
+ case `${SET_PAIRINGS}_REJECTED`:
+ // return Object.assign({}, state, { loading_list: false, error: payload.error });
+ return { ...state, loading_list: false, error: payload.error };
+ case `${SET_PAIRING}_PENDING`:
+ // return Object.assign({}, state, { loading_pairing: true });
+ return { ...state, loading_pairing: true };
+ case `${SET_PAIRING}_FULFILLED`:
+ // return Object.assign({}, state, { loading_pairing: false, pairing: payload.data });
+ return { ...state, loading_pairing: false, pairing: payload.data };
+ case `${SET_PAIRING}_REJECTED`:
+ // return Object.assign({}, state, { loading_pairing: false, error: payload.error });
+ return { ...state, loading_pairing: false, error: payload.error }
default:
- return state
+ return state;
}
-}
+};
diff --git a/rojak-ui-web/src/store.js b/rojak-ui-web/src/store.js
index 9edc00c..13649a8 100644
--- a/rojak-ui-web/src/store.js
+++ b/rojak-ui-web/src/store.js
@@ -2,6 +2,7 @@ import { createStore, combineReducers, compose, applyMiddleware } from 'redux'
import { reduxReactRouter, routerStateReducer } from 'redux-router'
import { createHashHistory } from 'history'
import thunk from 'redux-thunk'
+import promise from 'redux-promise-middleware'
import sentiments from './app/sentiments/reducer'
import viewer from './app/viewer/reducer'
@@ -22,6 +23,6 @@ const reducers = combineReducers({
export default compose(
reduxReactRouter({ createHistory: createHashHistory }),
- applyMiddleware(thunk),
+ applyMiddleware(promise(), thunk),
window.devToolsExtension ? window.devToolsExtension() : f => f
)(createStore)(reducers)