@@ -143,6 +143,7 @@ async function getActiveChallengesInit(handle, uuid) {
143
143
* @param {String } tokenV3
144
144
* @returns {Object } Payload
145
145
*/
146
+ /* eslint-disable no-unused-vars */
146
147
async function getActiveChallengesDone ( handle , uuid , tokenV3 ) {
147
148
const filter = { status : 'Active' } ;
148
149
const service = getChallengesService ( tokenV3 ) ;
@@ -168,6 +169,38 @@ async function getActiveChallengesDone(handle, uuid, tokenV3) {
168
169
169
170
return { handle, challenges, uuid } ;
170
171
}
172
+ /* eslint-enable no-unused-vars */
173
+
174
+ /**
175
+ * @static
176
+ * @desc Payload creator for the action that loads the member active challenges from v4 api.
177
+ * @param {String } handle
178
+ * @param {String } uuid
179
+ * @param {String } tokenV3
180
+ * @returns {Object } Payload
181
+ */
182
+ async function getActiveChallengesV4Done ( handle , uuid , tokenV3 ) {
183
+ const filter = { status : 'Active' } ;
184
+ const service = getChallengesService ( tokenV3 ) ;
185
+
186
+ function getAll ( getter , page = 0 , prev = null ) {
187
+ const PAGE_SIZE = 50 ;
188
+ return getter ( {
189
+ limit : PAGE_SIZE ,
190
+ offset : page * PAGE_SIZE ,
191
+ } ) . then ( ( { challenges : chunk } ) => {
192
+ if ( ! chunk . length ) return prev || [ ] ;
193
+ return getAll ( getter , 1 + page , prev ? prev . concat ( chunk ) : chunk ) ;
194
+ } ) ;
195
+ }
196
+ const calls = [
197
+ getAll ( params => service . getUserChallengesV4 ( handle , filter , params ) ) ,
198
+ ] ;
199
+
200
+ const [ challenges ] = await Promise . all ( calls ) ;
201
+
202
+ return { handle, challenges, uuid } ;
203
+ }
171
204
172
205
/**
173
206
* @static
@@ -243,6 +276,7 @@ async function getSubtrackChallengesInit(handle, uuid) {
243
276
* @param {Boolean } whether to refresh.
244
277
* @return {Action }
245
278
*/
279
+ /* eslint-disable no-unused-vars */
246
280
async function getSubtrackChallengesDone (
247
281
uuid , handle , tokenV3 , track , subTrack , pageNum , pageSize ,
248
282
refresh , userId ,
@@ -268,6 +302,46 @@ async function getSubtrackChallengesDone(
268
302
handle,
269
303
} ) ) ;
270
304
}
305
+ /* eslint-enable no-unused-vars */
306
+
307
+ /**
308
+ * @static
309
+ * @desc Create an action that loads the member subtrack challenges from v4 api.
310
+ * @param {String } uuid Operation UUID.
311
+ * @param {String } handle Member handle.
312
+ * @param {String } tokenV3 v3 auth token.
313
+ * @param {String } track Main track name.
314
+ * @param {String } subTrack Subtrack name.
315
+ * @param {Number } start page.
316
+ * @param {Number } page size.
317
+ * @param {Boolean } whether to refresh.
318
+ * @return {Action }
319
+ */
320
+ async function getSubtrackChallengesV4Done (
321
+ uuid , handle , tokenV3 , track , subTrack , pageNum , pageSize ,
322
+ refresh ,
323
+ ) {
324
+ const filter = {
325
+ status : 'Completed' ,
326
+ hasUserSubmittedForReview : 'true' ,
327
+ track,
328
+ subTrack,
329
+ } ;
330
+
331
+ const params = { } ;
332
+ params . orderBy = 'submissionEndDate desc' ;
333
+ params . limit = pageSize ;
334
+ params . offset = ( pageNum - 1 ) * pageSize ; // pageNum - 1 to match with v4 offset
335
+
336
+ const service = getChallengesService ( tokenV3 ) ;
337
+ return service . getUserChallengesV4 ( handle , filter , params )
338
+ . then ( res => ( {
339
+ uuid,
340
+ challenges : res . challenges ,
341
+ refresh,
342
+ handle,
343
+ } ) ) ;
344
+ }
271
345
272
346
/**
273
347
* @static
@@ -399,9 +473,9 @@ export default createActions({
399
473
GET_STATS_DISTRIBUTION_INIT : getStatsDistributionInit ,
400
474
GET_STATS_DISTRIBUTION_DONE : getStatsDistributionDone ,
401
475
GET_ACTIVE_CHALLENGES_INIT : getActiveChallengesInit ,
402
- GET_ACTIVE_CHALLENGES_DONE : getActiveChallengesDone ,
476
+ GET_ACTIVE_CHALLENGES_DONE : getActiveChallengesV4Done ,
403
477
GET_SUBTRACK_CHALLENGES_INIT : getSubtrackChallengesInit ,
404
- GET_SUBTRACK_CHALLENGES_DONE : getSubtrackChallengesDone ,
478
+ GET_SUBTRACK_CHALLENGES_DONE : getSubtrackChallengesV4Done ,
405
479
GET_USER_SRM_INIT : getUserSRMInit ,
406
480
GET_USER_SRM_DONE : getUserSRMDone ,
407
481
GET_USER_MARATHON_INIT : getUserMarathonInit ,
0 commit comments