@@ -15,6 +15,8 @@ import { getApi } from './api';
15
15
import { getService as getMembersService } from './members' ;
16
16
import { getService as getSubmissionsService } from './submissions' ;
17
17
18
+ const MAX_PER_PAGE = 300 ;
19
+
18
20
export function getFilterUrl ( backendFilter , frontFilter ) {
19
21
const ff = _ . clone ( frontFilter ) ;
20
22
// eslint-disable-next-line object-curly-newline
@@ -536,25 +538,37 @@ class ChallengesService {
536
538
* @return {Promise } Resolves to the api response.
537
539
*/
538
540
async getRecommendedChallenges ( filter , handle ) {
539
- const query = getFilterUrl (
541
+ filter . frontFilter . per_page = filter . frontFilter . perPage ;
542
+ delete filter . frontFilter . perPage ;
543
+
544
+ const query = getFilterUrl ( filter . backendFilter , filter . frontFilter ) ;
545
+
546
+ const totalQuery = getFilterUrl (
540
547
filter . backendFilter ,
541
- { ...filter . frontFilter , per_page : filter . frontFilter . perPage } ,
548
+ { ...filter . frontFilter , page : 1 , perPage : MAX_PER_PAGE } ,
542
549
) ;
543
550
544
551
let res = { } ;
552
+ let totalChallengeCount = { } ;
545
553
if ( _ . some ( filter . frontFilter . tracks , val => val )
546
554
&& ! _ . isEqual ( filter . frontFilter . types , [ ] ) ) {
547
555
const url = `/recommender-api/${ handle } ?${ query } ` ;
548
556
res = await this . private . apiV5 . get ( url ) . then ( checkErrorV5 ) ;
557
+ // Note: Recommender API is not returning X-Total response header.
558
+ // Please remove below statement with response get method.
559
+ const totalUrl = `/recommender-api/${ handle } ?${ totalQuery } ` ;
560
+ totalChallengeCount = await this . private . apiV5 . get ( totalUrl ) . then ( checkErrorV5 ) ;
549
561
}
550
- const challenges = res . result . filter ( ch => ch . jaccard_index > 0 ) ;
562
+ const challenges = res . result ? res . result . filter ( ch => ch . jaccard_index > 0 ) : [ ] ;
563
+ const total = totalChallengeCount . result
564
+ ? totalChallengeCount . result . filter ( ch => ch . jaccard_index > 0 ) : [ ] ;
551
565
552
- const totalCount = challenges . length ;
566
+ const totalCount = total . length ;
553
567
return {
554
568
challenges,
555
569
totalCount,
556
570
meta : {
557
- allChallengesCount : challenges . length ,
571
+ allChallengesCount : totalCount ,
558
572
allRecommendedChallengesCount : 0 ,
559
573
myChallengesCount : 0 ,
560
574
ongoingChallengesCount : 0 ,
0 commit comments