diff --git a/package.json b/package.json index 335e9970..65aac3b3 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1.1.7", + "version": "1.1.8", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", diff --git a/src/actions/members.js b/src/actions/members.js index 817ad5be..b1bbcbac 100644 --- a/src/actions/members.js +++ b/src/actions/members.js @@ -114,7 +114,7 @@ async function getStatsInit(handle, uuid) { * @static * @desc Create an action that loads member statistics. * @param {String} handle Member handle. - * @param {String} groupIds Group ids. + * @param {Array|String} groupIds Group ids. * @param {String} uuid Operation UUID. * @param {String} tokenV3 v3 auth token. * @return {Action} diff --git a/src/actions/profile.js b/src/actions/profile.js index 5bcb4da6..f04f31f6 100644 --- a/src/actions/profile.js +++ b/src/actions/profile.js @@ -132,7 +132,7 @@ function getStatsInit() {} * @static * @desc Creates an action that loads member's stats. * @param {String} handle Member handle. - * @param {String} groupIds Group ids. + * @param {Array|String} groupIds Group ids. * @return {Action} */ function getStatsDone(handle, groupIds) { diff --git a/src/services/members.js b/src/services/members.js index d1cd5b09..ce079215 100644 --- a/src/services/members.js +++ b/src/services/members.js @@ -83,17 +83,30 @@ class MembersService { /** * Gets member statistics. * @param {String} handle - * @param {String} groupIds + * @param {Array|String} groupIds * @return {Promise} Resolves to the stats object. */ async getStats(handle, groupIds) { - let res; - if (groupIds) { - res = await this.private.api.get(`/members/${handle}/stats?groupIds=${groupIds}`); - } else { - res = await this.private.api.get(`/members/${handle}/stats`); + if (!groupIds || (_.isArray(groupIds) && groupIds.length === 0)) { + const res = await this.private.api.get(`/members/${handle}/stats`); + return getApiResponsePayload(res); } - return getApiResponsePayload(res); + + const groupIdsArray = _.isArray(groupIds) ? groupIds : _.split(groupIds, ','); + const groupIdChunks = _.chunk(groupIdsArray, 50); + + const getStatRequests = _.map(groupIdChunks, async (groupIdChunk) => { + const res = await this.private.api.get(`/members/${handle}/stats?groupIds=${_.join(groupIdChunk)}`); + return getApiResponsePayload(res, false); + }); + const results = await Promise.all(getStatRequests); + + return _.uniqBy( + _.flatten( + _.filter(results, _.isArray), + ), + item => item.groupId, + ); } /** pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy