New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

twreporter-redux

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

twreporter-redux - npm Package Compare versions

Comparing version 2.1.3 to 2.1.4-beta.1

78

lib/actions/topics.js

@@ -38,6 +38,12 @@ 'use strict';

var _isInteger = require('lodash/isInteger');
var _isInteger2 = _interopRequireDefault(_isInteger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// lodash
var _ = {
get: _get2.default
get: _get2.default,
isInteger: _isInteger2.default

@@ -47,6 +53,3 @@ /* Fetch a full topic, whose assets like relateds, leading_video ...etc are all complete,

*/
};
// lodash
function fetchAFullTopic(slug) {
};function fetchAFullTopic(slug) {
return function (dispatch, getState) {

@@ -92,3 +95,3 @@ var state = getState();

function _fetchTopics(dispatch, path, successActionType) {
function _fetchTopics(dispatch, path, page, nPerPage, successActionType) {
// Start to get topics

@@ -107,2 +110,4 @@ var url = (0, _formApiUrl2.default)(path);

payload: {
page: page,
nPerPage: nPerPage,
items: _.get(response, 'data.records', []),

@@ -116,3 +121,6 @@ total: _.get(response, 'data.meta.total', 0)

type: _actionTypes2.default.ERROR_TO_GET_TOPICS,
error: error
payload: {
page: page,
error: error
}
});

@@ -126,18 +134,58 @@ });

*/
function fetchTopics(limit) {
function fetchTopics() {
var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
var nPerPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
return function (dispatch, getState) {
// check if nPerPage number is valid
if (_.isInteger(nPerPage) && nPerPage > 0) {
return dispatch({
type: _actionTypes2.default.ERROR_TO_GET_TOPICS,
error: 'nPerPage value must be an interger larger than 0, but is ' + nPerPage
});
}
var state = getState();
var topics = _.get(state, _reduxStateFieldNames2.default.topicList);
var items = _.get(topics, 'items');
var pageItems = _.get(topics, ['items', page], []);
var pageItemsLength = pageItems.length;
var total = _.get(topics, 'total', 0);
var totalPages = Math.ceil(total / nPerPage);
// if items already exsited and there is nothing more to load
if (Array.isArray(items) && _.get(topics, 'total', 0) <= items.length) {
return Promise.resolve();
// check if page number is valid
if (_.isInteger(page) && page > 0 && page <= totalPages) {
return dispatch({
type: _actionTypes2.default.ERROR_TO_GET_TOPICS,
error: 'page value must be an interger between 1 to ' + totalPages + ', but is ' + page
});
}
var offset = _.get(topics, 'items.length', 0);
// If items of target page already exist
if (page < totalPages) {
if (pageItemsLength === nPerPage) {
return dispatch({
type: _actionTypes2.default.CHANGE_SELECTED_TOPICS_PAGE,
payload: {
page: page,
nPerPage: nPerPage,
items: pageItems
}
});
}
}
if (page === totalPages) {
if (pageItemsLength === total % nPerPage) {
return dispatch({
type: _actionTypes2.default.CHANGE_SELECTED_TOPICS_PAGE,
payload: {
page: page,
nPerPage: nPerPage,
items: pageItems
}
});
}
}
var path = _apiEndpoints2.default.topics + '?limit=' + limit + '&offset=' + offset;
var path = _apiEndpoints2.default.topics + '?limit=' + nPerPage + '&offset=' + nPerPage * (page - 1);
return _fetchTopics(dispatch, path, _actionTypes2.default.GET_TOPICS);
return _fetchTopics(dispatch, path, page, nPerPage, _actionTypes2.default.GET_TOPICS);
};

@@ -144,0 +192,0 @@ }

@@ -19,2 +19,7 @@ 'use strict';

// actions setting topics
CHANGE_SELECTED_TOPICS_PAGE: 'CHANGE_SELECTED_TOPICS_PAGE',
CHANGE_N_PER_TOPICS_PAGE: 'CHANGE_N_PER_TOPICS_PAGE',
// actions fetching a full topic

@@ -21,0 +26,0 @@ START_TO_GET_A_FULL_TOPIC: 'START_TO_GET_A_FULL_TOPIC',

39

lib/reducers/topics.js

@@ -12,2 +12,6 @@ 'use strict';

var _assign = require('lodash/assign');
var _assign2 = _interopRequireDefault(_assign);
var _concat = require('lodash/concat');

@@ -35,3 +39,5 @@

// lodash
var _ = {
assign: _assign2.default,
concat: _concat2.default,

@@ -44,5 +50,2 @@ get: _get2.default,

// lodash
function topic() {

@@ -56,3 +59,3 @@ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

{
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -65,3 +68,3 @@ error: null,

case _actionTypes2.default.START_TO_GET_A_FULL_TOPIC:
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -73,3 +76,3 @@ error: null,

case _actionTypes2.default.ERROR_TO_GET_A_FULL_TOPIC:
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -89,14 +92,18 @@ error: _.get(action, 'payload.error'),

switch (action.type) {
case _actionTypes2.default.CHANGE_SELECTED_TOPICS_PAGE:
case _actionTypes2.default.GET_TOPICS:
{
var items = _.get(action, 'payload.items', []);
var total = _.get(action, 'payload.total', 0);
var payload = action.payload;
var concatItems = _.concat(_.get(state, 'items', []), _.map(items, function (item) {
return item.slug;
}));
var pageItems = _.get(payload, 'items');
var total = _.get(payload, 'total');
var page = _.get(payload, 'page');
var nPerPage = _.get(payload, 'nPerPage');
return _.merge({}, state, {
items: concatItems,
var nextItems = nPerPage !== state.nPerPage ? { page: pageItems } : _.merge({}, state.items, { page: pageItems });
return _.assign({}, state, {
items: nextItems,
total: total,
selectedPage: page,
nPerPage: nPerPage,
error: null,

@@ -109,3 +116,3 @@ isFetching: false

console.log('url to fetch:', action.url);
return _.merge({}, state, {
return _.assign({}, state, {
error: null,

@@ -116,4 +123,4 @@ isFetching: true

case _actionTypes2.default.ERROR_TO_GET_TOPICS:
return _.merge({}, state, {
error: _.get(action, 'error'),
return _.assign({}, state, {
error: _.get(action, 'payload.error'),
isFetching: false

@@ -120,0 +127,0 @@ });

{
"name": "twreporter-redux",
"version": "2.1.3",
"version": "2.1.4-beta.1",
"description": "redux actions and reducers for twreporter website",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -10,5 +10,7 @@ import apiConfig from '../conf/api-config.json'

import get from 'lodash/get'
import isInteger from 'lodash/isInteger'
const _ = {
get,
isInteger,
}

@@ -63,3 +65,3 @@

function _fetchTopics(dispatch, path, successActionType) {
function _fetchTopics(dispatch, path, page, nPerPage, successActionType) {
// Start to get topics

@@ -79,2 +81,4 @@ const url = formAPIURL(path)

payload: {
page,
nPerPage,
items: _.get(response, 'data.records', []),

@@ -89,3 +93,6 @@ total: _.get(response, 'data.meta.total', 0),

type: types.ERROR_TO_GET_TOPICS,
error,
payload: {
page,
error,
},
})

@@ -99,18 +106,55 @@ })

*/
export function fetchTopics(limit) {
export function fetchTopics(page = 1, nPerPage = 5) {
return (dispatch, getState) => {
// check if nPerPage number is valid
if (_.isInteger(nPerPage) && nPerPage > 0) {
return dispatch({
type: types.ERROR_TO_GET_TOPICS,
error: `nPerPage value must be an interger larger than 0, but is ${nPerPage}`,
})
}
const state = getState()
const topics = _.get(state, fieldNames.topicList)
const items = _.get(topics, 'items')
const pageItems = _.get(topics, ['items', page], [])
const pageItemsLength = pageItems.length
const total = _.get(topics, 'total', 0)
const totalPages = Math.ceil(total / nPerPage)
// if items already exsited and there is nothing more to load
if (Array.isArray(items) && _.get(topics, 'total', 0) <= items.length) {
return Promise.resolve()
// check if page number is valid
if (_.isInteger(page) && page > 0 && page <= totalPages) {
return dispatch({
type: types.ERROR_TO_GET_TOPICS,
error: `page value must be an interger between 1 to ${totalPages}, but is ${page}`,
})
}
const offset = _.get(topics, 'items.length', 0)
// If items of target page already exist
if (page < totalPages) {
if (pageItemsLength === nPerPage) {
return dispatch({
type: types.CHANGE_SELECTED_TOPICS_PAGE,
payload: {
page,
nPerPage,
items: pageItems,
},
})
}
}
if (page === totalPages) {
if (pageItemsLength === total % nPerPage) {
return dispatch({
type: types.CHANGE_SELECTED_TOPICS_PAGE,
payload: {
page,
nPerPage,
items: pageItems,
},
})
}
}
const path = `${apiEndpoints.topics}?limit=${limit}&offset=${offset}`
const path = `${apiEndpoints.topics}?limit=${nPerPage}&offset=${nPerPage * (page - 1)}`
return _fetchTopics(dispatch, path, types.GET_TOPICS)
return _fetchTopics(dispatch, path, page, nPerPage, types.GET_TOPICS)
}

@@ -117,0 +161,0 @@ }

@@ -14,2 +14,7 @@ const types = {

// actions setting topics
CHANGE_SELECTED_TOPICS_PAGE: 'CHANGE_SELECTED_TOPICS_PAGE',
CHANGE_N_PER_TOPICS_PAGE: 'CHANGE_N_PER_TOPICS_PAGE',
// actions fetching a full topic

@@ -16,0 +21,0 @@ START_TO_GET_A_FULL_TOPIC: 'START_TO_GET_A_FULL_TOPIC',

import types from '../constants/action-types'
// lodash
import assign from 'lodash/assign'
import concat from 'lodash/concat'

@@ -11,2 +12,3 @@ import get from 'lodash/get'

const _ = {
assign,
concat,

@@ -23,3 +25,3 @@ get,

case types.CHANGE_SELECTED_TOPIC: {
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -32,3 +34,3 @@ error: null,

case types.START_TO_GET_A_FULL_TOPIC:
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -40,3 +42,3 @@ error: null,

case types.ERROR_TO_GET_A_FULL_TOPIC:
return _.merge({}, state, {
return _.assign({}, state, {
slug: _.get(action, 'payload.slug'),

@@ -53,11 +55,16 @@ error: _.get(action, 'payload.error'),

switch (action.type) {
case types.CHANGE_SELECTED_TOPICS_PAGE:
case types.GET_TOPICS: {
const items = _.get(action, 'payload.items', [])
const total = _.get(action, 'payload.total', 0)
const { payload } = action
const pageItems = _.get(payload, 'items')
const total = _.get(payload, 'total')
const page = _.get(payload, 'page')
const nPerPage = _.get(payload, 'nPerPage')
const concatItems = _.concat(_.get(state, 'items', []), _.map(items, item => item.slug))
return _.merge({}, state, {
items: concatItems,
const nextItems = (nPerPage !== state.nPerPage) ? { page: pageItems } : _.merge({}, state.items, { page: pageItems })
return _.assign({}, state, {
items: nextItems,
total,
selectedPage: page,
nPerPage,
error: null,

@@ -70,3 +77,3 @@ isFetching: false,

console.log('url to fetch:', action.url)
return _.merge({}, state, {
return _.assign({}, state, {
error: null,

@@ -77,4 +84,4 @@ isFetching: true,

case types.ERROR_TO_GET_TOPICS:
return _.merge({}, state, {
error: _.get(action, 'error'),
return _.assign({}, state, {
error: _.get(action, 'payload.error'),
isFetching: false,

@@ -81,0 +88,0 @@ })

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc