UNPKG

twreporter-redux

Version:

redux actions and reducers for twreporter website

208 lines (171 loc) 6.42 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.createBookmark = createBookmark; exports.getBookmarks = getBookmarks; exports.getCurrentBookmark = getCurrentBookmark; exports.deleteBookmark = deleteBookmark; var _dateStringToTimestamp = require('../utils/date-string-to-timestamp'); var _dateStringToTimestamp2 = _interopRequireDefault(_dateStringToTimestamp); var _apiConfig = require('../conf/api-config.json'); var _apiConfig2 = _interopRequireDefault(_apiConfig); var _apiEndpoints = require('../constants/api-endpoints'); var _apiEndpoints2 = _interopRequireDefault(_apiEndpoints); var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _findIndex = require('lodash/findIndex'); var _findIndex2 = _interopRequireDefault(_findIndex); var _formApiUrl = require('../utils/form-api-url'); var _formApiUrl2 = _interopRequireDefault(_formApiUrl); var _get = require('lodash/get'); var _get2 = _interopRequireDefault(_get); var _localStorageManager = require('../utils/local-storage-manager'); var _actionTypes = require('../constants/action-types'); var _actionTypes2 = _interopRequireDefault(_actionTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _ = { get: _get2.default, findIndex: _findIndex2.default }; var getAxiosInstance = function getAxiosInstance(token) { return _axios2.default.create({ headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + token } }); }; var errorHandler = function errorHandler(error) { return { type: _actionTypes2.default.RECORD_BOOKMARK_ERROR, payload: { error: error } }; }; var deleteSingleBookmarkSuc = function deleteSingleBookmarkSuc(target_index) { return { type: _actionTypes2.default.DELETE_SINGLE_BOOKMARK, payload: { index: target_index } }; }; var getMultipleBookmarksSuc = function getMultipleBookmarksSuc(offset, data, total) { return { type: _actionTypes2.default.GET_MULTIPLE_BOOKMARKS, payload: { offset: offset, data: data, total: total } }; }; var createSingleBookmarkSuc = function createSingleBookmarkSuc(bookmark) { return { type: _actionTypes2.default.CREATE_SINGLE_BOOKMARK, payload: { bookmark: bookmark } }; }; function createBookmark(_ref) { var slug = _ref.slug, host = _ref.host, is_external = _ref.is_external, title = _ref.title, desc = _ref.desc, thumbnail = _ref.thumbnail, category = _ref.category, published_date = _ref.published_date, authors = _ref.authors; return function (dispatch) { var _getNecessaryInfo = (0, _localStorageManager.getNecessaryInfo)(), token = _getNecessaryInfo.token, userId = _getNecessaryInfo.userId; var axiosInstance = getAxiosInstance(token); var path = _apiEndpoints2.default.users + '/' + userId + '/' + _apiEndpoints2.default.bookmarks; var url = (0, _formApiUrl2.default)(path); var bookmark = { slug: slug, host: host, is_external: is_external, title: title, desc: desc, thumbnail: thumbnail, category: category, published_date: (0, _dateStringToTimestamp2.default)(published_date), authors: authors }; return axiosInstance.post(url, bookmark).then(function (res) { var id = _.get(res, 'data.record.id', 0); dispatch(createSingleBookmarkSuc(_extends({}, bookmark, { id: id }))); return id; }).catch(function (error) { dispatch(errorHandler(error)); throw error; }); }; } function getBookmarks(offset, limit, sort) { return function (dispatch) { var _getNecessaryInfo2 = (0, _localStorageManager.getNecessaryInfo)(), token = _getNecessaryInfo2.token, userId = _getNecessaryInfo2.userId; var axiosInstance = getAxiosInstance(token); var path = _apiEndpoints2.default.users + '/' + userId + '/' + _apiEndpoints2.default.bookmarks + '?offset=' + offset + '&limit=' + limit + '&sort=' + sort; var url = (0, _formApiUrl2.default)(path); return axiosInstance.get(url).then(function (res) { var data = _.get(res, 'data.records', []); var total = _.get(res, 'data.meta.total', 0); if (data && total) { dispatch(getMultipleBookmarksSuc(offset, data, total)); } return { data: data, total: total }; }).catch(function (error) { dispatch(errorHandler(error)); throw error; }); }; } function getCurrentBookmark(bookmarkSlug, host) { return function (dispatch) { var _getNecessaryInfo3 = (0, _localStorageManager.getNecessaryInfo)(), token = _getNecessaryInfo3.token, userId = _getNecessaryInfo3.userId; var axiosInstance = getAxiosInstance(token); var path = _apiEndpoints2.default.users + '/' + userId + '/' + _apiEndpoints2.default.bookmarks + '/' + bookmarkSlug + '?host=' + host; var url = (0, _formApiUrl2.default)(path); return axiosInstance.get(url).then(function (res) { return _.get(res, 'data.record.id', 0); }).catch(function (error) { dispatch(errorHandler(error)); throw error; }); }; } function deleteBookmark(bookmarkID) { return function (dispatch, getState) { var state = getState(); var data = _.get(state, ['bookmarks', 'data'], []); var target_index = _.findIndex(data, function (obj) { return obj.id === bookmarkID; }); var _getNecessaryInfo4 = (0, _localStorageManager.getNecessaryInfo)(), token = _getNecessaryInfo4.token, userId = _getNecessaryInfo4.userId; var axiosInstance = getAxiosInstance(token); var path = _apiEndpoints2.default.users + '/' + userId + '/' + _apiEndpoints2.default.bookmarks + '/' + bookmarkID; var url = (0, _formApiUrl2.default)(path); return axiosInstance.delete(url, { timeout: _apiConfig2.default.API_TIME_OUT }).then(function () { dispatch(deleteSingleBookmarkSuc(target_index)); }).catch(function (error) { dispatch(errorHandler(error)); throw error; }); }; }