File tree Expand file tree Collapse file tree 3 files changed +22
-9
lines changed Expand file tree Collapse file tree 3 files changed +22
-9
lines changed Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff 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 */
138138function getStatsDone ( handle , groupIds ) {
Original file line number Diff line number Diff 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 /**
You can’t perform that action at this time.
0 commit comments