@@ -403,10 +403,17 @@ class ChallengesService {
403
403
* @param {Object } params Optional.
404
404
* @return {Promise } Resolves to the api response.
405
405
*/
406
- getChallenges ( filters , params ) {
406
+ async getChallenges ( filters , params ) {
407
+ const memberId = this . private . tokenV3 ? decodeToken ( this . private . tokenV3 ) . userId : null ;
408
+ let userChallenges = [ ] ;
409
+ if ( memberId ) {
410
+ userChallenges = await this . private . apiV5 . get ( `/resources/${ memberId } /challenges` )
411
+ . then ( checkErrorV5 ) . then ( res => res . result ) ;
412
+ }
407
413
return this . private . getChallenges ( '/challenges/' , filters , params )
408
414
. then ( ( res ) => {
409
- res . challenges . forEach ( item => normalizeChallenge ( item ) ) ;
415
+ res . challenges . forEach ( item => normalizeChallenge ( item ,
416
+ userChallenges . includes ( item . id ) ? memberId : null ) ) ;
410
417
return res ;
411
418
} ) ;
412
419
}
@@ -433,25 +440,29 @@ class ChallengesService {
433
440
/**
434
441
* Gets challenges of the specified user.
435
442
* @param {String } userId User id whose challenges we want to fetch.
436
- * @param {Object } filters Optional.
437
- * @param {Number } params Optional.
438
443
* @return {Promise } Resolves to the api response.
439
444
*/
440
445
getUserChallenges ( userId , filters , params ) {
441
446
const userFilters = _ . cloneDeep ( filters ) ;
442
447
ChallengesService . updateFiltersParamsForGettingMemberChallenges ( userFilters , params ) ;
443
- const query = {
444
- ...params ,
445
- ...userFilters ,
446
- memberId : userId ,
447
- } ;
448
- const endpoint = '/challenges' ;
449
- const url = `${ endpoint } ?${ qs . stringify ( _ . omit ( query , [ 'limit' , 'offset' , 'technologies' ] ) ) } ` ;
450
-
451
- return this . private . apiV5 . get ( url )
452
- . then ( ( res ) => {
453
- res . challenges . forEach ( item => normalizeChallenge ( item , userId ) ) ;
454
- return res ;
448
+ return this . private . apiV5 . get ( `/resources/${ userId } /challenges` )
449
+ . then ( checkErrorV5 ) . then ( ( userChallenges ) => {
450
+ const query = {
451
+ ...params ,
452
+ ...userFilters ,
453
+ ids : userChallenges . result ,
454
+ } ;
455
+ const endpoint = '/challenges' ;
456
+ const url = `${ endpoint } ?${ qs . stringify ( _ . omit ( query , [ 'limit' , 'offset' , 'technologies' ] ) ) } ` ;
457
+
458
+ return this . private . apiV5 . get ( url )
459
+ . then ( checkErrorV5 ) . then ( ( res ) => {
460
+ res . result . forEach ( item => normalizeChallenge ( item , userId ) ) ;
461
+ const newResponse = { } ;
462
+ newResponse . challenges = res . result ;
463
+ newResponse . totalCount = res . result . length ;
464
+ return newResponse ;
465
+ } ) ;
455
466
} ) ;
456
467
}
457
468
0 commit comments