UNPKG

twreporter-redux

Version:

redux actions and reducers for twreporter website

85 lines (64 loc) 2.53 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchIndexPageContent = fetchIndexPageContent; var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _get = require('lodash/get'); var _get2 = _interopRequireDefault(_get); var _actionTypes = require('../constants/action-types'); var _actionTypes2 = _interopRequireDefault(_actionTypes); var _reduxStateFields = require('../constants/redux-state-fields'); var _reduxStateFields2 = _interopRequireDefault(_reduxStateFields); var _apiEndpoints = require('../constants/api-endpoints'); var _apiEndpoints2 = _interopRequireDefault(_apiEndpoints); var _formApiUrl = require('../utils/form-api-url'); var _formApiUrl2 = _interopRequireDefault(_formApiUrl); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _ = { get: _get2.default /** * fetchIndexPageContent * This function will fetch the top fourth sections on the index page, * including latest, editor_picks, latest_topic and reviews */ }; // lodash function fetchIndexPageContent() { return function (dispatch, getState) { var state = getState(); var indexPage = _.get(state, _reduxStateFields2.default.indexPage, {}); var fields = [_reduxStateFields2.default.latest, _reduxStateFields2.default.editorPicks, _reduxStateFields2.default.latestTopic, _reduxStateFields2.default.reviews, _reduxStateFields2.default.topics, _reduxStateFields2.default.photos, _reduxStateFields2.default.infographics]; var isContentReady = true; fields.forEach(function (field) { if (!Object.prototype.hasOwnProperty.call(indexPage, field)) { isContentReady = false; } }); if (isContentReady) { return Promise.resolve(); } var path = '' + _apiEndpoints2.default.indexPage; // Start to get content dispatch({ type: _actionTypes2.default.START_TO_GET_INDEX_PAGE_CONTENT }); return _axios2.default.get((0, _formApiUrl2.default)(path)) // Get content successfully .then(function (response) { var items = _.get(response, 'data.records', {}); // dispatch content for each sections return dispatch({ type: _actionTypes2.default.GET_CONTENT_FOR_INDEX_PAGE, payload: items }); }).catch(function (error) { // Error to get topics return dispatch({ type: _actionTypes2.default.ERROR_TO_GET_INDEX_PAGE_CONTENT, error: error }); }); }; }