Skip to content

Commit 492917c

Browse files
Merge pull request topcoder-platform#306 from fikzzzy/split-groupid-requests
community-app#5308 Split GroupIDs By Several Chunks
2 parents 355429e + e54c54e commit 492917c

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

src/actions/members.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ async function getStatsInit(handle, uuid) {
114114
* @static
115115
* @desc Create an action that loads member statistics.
116116
* @param {String} handle Member handle.
117-
* @param {String} groupIds Group ids.
117+
* @param {Array<String>|String} groupIds Group ids.
118118
* @param {String} uuid Operation UUID.
119119
* @param {String} tokenV3 v3 auth token.
120120
* @return {Action}

src/actions/profile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ function getStatsInit() {}
132132
* @static
133133
* @desc Creates an action that loads member's stats.
134134
* @param {String} handle Member handle.
135-
* @param {String} groupIds Group ids.
135+
* @param {Array<String>|String} groupIds Group ids.
136136
* @return {Action}
137137
*/
138138
function getStatsDone(handle, groupIds) {

src/services/members.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,30 @@ class MembersService {
8383
/**
8484
* Gets member statistics.
8585
* @param {String} handle
86-
* @param {String} groupIds
86+
* @param {Array<String>|String} groupIds
8787
* @return {Promise} Resolves to the stats object.
8888
*/
8989
async getStats(handle, groupIds) {
90-
let res;
91-
if (groupIds) {
92-
res = await this.private.api.get(`/members/${handle}/stats?groupIds=${groupIds}`);
93-
} else {
94-
res = await this.private.api.get(`/members/${handle}/stats`);
90+
if (!groupIds) {
91+
const res = await this.private.api.get(`/members/${handle}/stats`);
92+
return getApiResponsePayload(res);
9593
}
96-
return getApiResponsePayload(res);
94+
95+
const groupIdsArray = _.isArray(groupIds) ? groupIds : _.split(groupIds, ',');
96+
const groupIdChunks = _.chunk(groupIdsArray, 50);
97+
98+
const getStatRequests = _.map(groupIdChunks, async (groupIdChunk) => {
99+
const res = await this.private.api.get(`/members/${handle}/stats?groupIds=${_.join(groupIdChunk)}`);
100+
return getApiResponsePayload(res, false);
101+
});
102+
const results = await Promise.all(getStatRequests);
103+
104+
return _.uniqBy(
105+
_.flatten(
106+
_.filter(results, _.isArray),
107+
),
108+
item => item.groupId,
109+
);
97110
}
98111

99112
/**

0 commit comments

Comments
 (0)
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