diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e161844..e8eac28e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish + - run: npm publish --tag test-release # dont change anything workflows: version: 2 diff --git a/package.json b/package.json index 335e9970..bb39e71b 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": "1000.27.13", "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, + ); } /**