Skip to content

Commit ee96d89

Browse files
committed
Split GroupIDs By Several Chunks
1 parent 355429e commit ee96d89

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 _.flatten(
105+
_.uniqBy(
106+
_.filter(results, _.isArray),
107+
item => item.groupId
108+
)
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