joyent-portal/spikes/stacks/redux-thunk/src/client/reducers/changes.js

57 lines
1021 B
JavaScript

const ReduxActions = require('redux-actions');
const app = require('../../../package.json').name;
const api = require('../api');
const {
createAction,
handleActions
} = ReduxActions;
const {
fetchChanges
} = api;
const FETCH_CHANGES = `${app}/changes/FETCH_CHANGES`;
exports.data = handleActions({
[`${FETCH_CHANGES}_FULFILLED`]: (state, action) => {
return action.payload;
}
}, []);
exports.ui = handleActions({
[`${FETCH_CHANGES}_PENDING`]: (state, action) => {
return {
...state,
loading: true
};
},
[`${FETCH_CHANGES}_FULFILLED`]: (state, action) => {
return {
...state,
loading: false,
loaded: false
};
},
[`${FETCH_CHANGES}_REJECTED`]: (state, action) => {
// TODO: deal with error
return {
...state,
loading: false,
loaded: false
};
}
}, {
loading: false,
loaded: false
});
exports.actions = {
fetchChanges: () => {
return {
type: FETCH_CHANGES,
payload: fetchChanges()
};
}
};