@@ -6,11 +6,16 @@ import _ from 'lodash';
6
6
import React from 'react' ;
7
7
import PT from 'prop-types' ;
8
8
import { connect } from 'react-redux' ;
9
- import { BUCKETS , getBuckets , isReviewOpportunitiesBucket } from 'utils/challenge-listing/buckets' ;
9
+ import {
10
+ BUCKETS , getBuckets , isReviewOpportunitiesBucket , NO_LIVE_CHALLENGES_CONFIG ,
11
+ } from 'utils/challenge-listing/buckets' ;
12
+ import { challenge as challengeUtils } from 'topcoder-react-lib' ;
10
13
import Bucket from './Bucket' ;
11
14
import ReviewOpportunityBucket from './ReviewOpportunityBucket' ;
12
15
import './style.scss' ;
13
16
17
+ const Filter = challengeUtils . filter ;
18
+
14
19
function Listing ( {
15
20
activeBucket,
16
21
auth,
@@ -39,6 +44,17 @@ function Listing({
39
44
expandTag,
40
45
} ) {
41
46
const buckets = getBuckets ( _ . get ( auth . user , 'handle' ) ) ;
47
+ const isChallengesAvailable = ( bucket ) => {
48
+ const filter = Filter . getFilterFunction ( buckets [ bucket ] . filter ) ;
49
+ const clonedChallenges = _ . clone ( challenges ) ;
50
+ const filteredChallenges = [ ] ;
51
+ for ( let i = 0 ; i < clonedChallenges . length ; i += 1 ) {
52
+ if ( filter ( clonedChallenges [ i ] ) ) {
53
+ filteredChallenges . push ( clonedChallenges [ i ] ) ;
54
+ }
55
+ }
56
+ return filteredChallenges . length > 0 ;
57
+ } ;
42
58
const getBucket = ( bucket , expanded = false ) => {
43
59
let keepPlaceholders = false ;
44
60
let loading ;
@@ -96,6 +112,7 @@ function Listing({
96
112
setSort = { sort => setSort ( bucket , sort ) }
97
113
sort = { sorts [ bucket ] }
98
114
userHandle = { _ . get ( auth , 'user.handle' ) }
115
+ activeBucket = { activeBucket }
99
116
/>
100
117
)
101
118
) ;
@@ -110,6 +127,20 @@ function Listing({
110
127
) ;
111
128
}
112
129
130
+ let isFilled = isChallengesAvailable ( BUCKETS . OPEN_FOR_REGISTRATION )
131
+ || isChallengesAvailable ( BUCKETS . ONGOING ) ;
132
+ if ( auth . user ) {
133
+ isFilled = isFilled || isChallengesAvailable ( BUCKETS . MY ) ;
134
+ }
135
+ if ( ! isFilled ) {
136
+ return (
137
+ < div styleName = "challengeCardContainer" >
138
+ < div styleName = "no-results" >
139
+ { `${ NO_LIVE_CHALLENGES_CONFIG [ activeBucket ] } ` }
140
+ </ div >
141
+ </ div >
142
+ ) ;
143
+ }
113
144
return (
114
145
< div styleName = "challengeCardContainer" >
115
146
{ preListingMsg }
0 commit comments