Skip to content

Commit 346296a

Browse files
authored
Merge branch 'feature-refactor-challengelist' into issue-4964
2 parents 962d894 + 57918b7 commit 346296a

File tree

6 files changed

+43
-17
lines changed

6 files changed

+43
-17
lines changed

.circleci/config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,6 @@ workflows:
259259
branches:
260260
only:
261261
- develop
262-
- feature-refactor-challengelist
263262
# Production builds are exectuted
264263
# when PR is merged to the master
265264
# Don't change anything in this configuration

src/shared/components/challenge-listing/Filters/ChallengeFilters.jsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@ export default function ChallengeFilters({
4343
validTypes,
4444
// isSavingFilter,
4545
}) {
46-
// let filterRulesCount = 0;
47-
// if (filterState.tags) filterRulesCount += 1;
48-
// if (filterState.types) filterRulesCount += 1;
49-
// if (filterState.endDate || filterState.startDate) filterRulesCount += 1;
50-
// if (isReviewOpportunitiesBucket && filterState.reviewOpportunityType) filterRulesCount += 1;
51-
// if (selectedCommunityId !== '') filterRulesCount += 1;
46+
let filterRulesCount = 0;
47+
if (filterState.groups && filterState.groups.length) filterRulesCount += 1;
48+
if (filterState.tags && filterState.tags.length) filterRulesCount += 1;
49+
if (filterState.types && filterState.types.length) filterRulesCount += 1;
50+
if (filterState.endDateEnd || filterState.startDateStart) filterRulesCount += 1;
51+
if (isReviewOpportunitiesBucket && filterState.reviewOpportunityType) filterRulesCount += 1;
52+
if (selectedCommunityId !== '' && selectedCommunityId !== 'All') filterRulesCount += 1;
5253
const isTrackOn = track => filterState.tracks[track];
5354

5455
const switchTrack = (track, on) => {
@@ -151,7 +152,7 @@ export default function ChallengeFilters({
151152
</span>
152153
<FiltersSwitch
153154
active={expanded}
154-
// filtersCount={filterRulesCount}
155+
filtersCount={filterRulesCount}
155156
onSwitch={setExpanded}
156157
styleName="FiltersSwitch"
157158
/>

src/shared/components/challenge-listing/Listing/Bucket/index.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import React, { useRef } from 'react';
1212
import Sort from 'utils/challenge-listing/sort';
1313
// import { NO_LIVE_CHALLENGES_CONFIG, BUCKETS, BUCKET_DATA }
1414
// from 'utils/challenge-listing/buckets';
15-
import { BUCKET_DATA } from 'utils/challenge-listing/buckets';
15+
import { NO_LIVE_CHALLENGES_CONFIG, BUCKET_DATA } from 'utils/challenge-listing/buckets';
1616
import SortingSelectBar from 'components/SortingSelectBar';
1717
import Waypoint from 'react-waypoint';
1818
// import { challenge as challengeUtils } from 'topcoder-react-lib';
@@ -102,6 +102,13 @@ export default function Bucket({
102102
// );
103103
// }
104104

105+
if (sortedChallenges.length === 0) {
106+
return (
107+
<div styleName="no-results">
108+
{ `${NO_LIVE_CHALLENGES_CONFIG[bucket]}` }
109+
</div>
110+
);
111+
}
105112
const cards = sortedChallenges.map(challenge => (
106113
<ChallengeCard
107114
challenge={challenge}

src/shared/components/challenge-listing/Listing/index.jsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import './style.scss';
2020
function Listing({
2121
activeBucket,
2222
auth,
23+
allActiveChallengesLoaded,
24+
allMyChallengesLoaded,
25+
allOpenForRegistrationChallengesLoaded,
2326
challenges,
2427
openForRegistrationChallenges,
2528
myChallenges,
@@ -88,19 +91,19 @@ function Listing({
8891
case BUCKETS.MY:
8992
bucketChallenges = [].concat(myChallenges);
9093
loading = loadingMyChallenges;
91-
loadMore = loadMoreMy;
94+
loadMore = allMyChallengesLoaded ? null : loadMoreMy;
9295
newExpanded = newExpanded || (+meta.myChallengesCount === bucketChallenges.length);
9396
break;
9497
case BUCKETS.OPEN_FOR_REGISTRATION:
9598
bucketChallenges = [].concat(openForRegistrationChallenges);
9699
loading = loadingOpenForRegistrationChallenges;
97-
loadMore = loadMoreOpenForRegistration;
100+
loadMore = allOpenForRegistrationChallengesLoaded ? null : loadMoreOpenForRegistration;
98101
newExpanded = newExpanded || (+meta.openChallengesCount === bucketChallenges.length);
99102
break;
100103
case BUCKETS.ONGOING:
101104
bucketChallenges = [].concat(challenges);
102105
loading = loadingOnGoingChallenges;
103-
loadMore = loadMoreOnGoing;
106+
loadMore = allActiveChallengesLoaded ? null : loadMoreOnGoing;
104107
newExpanded = newExpanded || (+meta.ongoingChallengesCount === bucketChallenges.length);
105108
break;
106109
default:
@@ -189,9 +192,9 @@ function Listing({
189192
return (
190193
<div styleName="challengeCardContainer">
191194
{preListingMsg}
192-
{auth.user ? getBucket(BUCKETS.MY) : null}
195+
{(auth.user && myChallenges.length > 0) ? getBucket(BUCKETS.MY) : null}
193196
{/* {extraBucket ? getBucket(extraBucket) : null} */}
194-
{getBucket(BUCKETS.OPEN_FOR_REGISTRATION)}
197+
{openForRegistrationChallenges.length > 0 && getBucket(BUCKETS.OPEN_FOR_REGISTRATION)}
195198
{/* {getBucket(BUCKETS.ONGOING)} */}
196199
</div>
197200
);
@@ -231,6 +234,9 @@ Listing.propTypes = {
231234
userId: PT.string,
232235
}),
233236
}).isRequired,
237+
allActiveChallengesLoaded: PT.bool.isRequired,
238+
allMyChallengesLoaded: PT.bool.isRequired,
239+
allOpenForRegistrationChallengesLoaded: PT.bool.isRequired,
234240
challenges: PT.arrayOf(PT.shape()),
235241
openForRegistrationChallenges: PT.arrayOf(PT.shape()),
236242
myChallenges: PT.arrayOf(PT.shape()),
@@ -274,6 +280,9 @@ const mapStateToProps = (state) => {
274280
const cl = state.challengeListing;
275281
return {
276282
// allActiveChallengesLoaded: cl.allActiveChallengesLoaded,
283+
allActiveChallengesLoaded: cl.allActiveChallengesLoaded,
284+
allMyChallengesLoaded: cl.allMyChallengesLoaded,
285+
allOpenForRegistrationChallengesLoaded: cl.allOpenForRegistrationChallengesLoaded,
277286
// pastSearchTimestamp: cl.pastSearchTimestamp,
278287
challengeTypes: cl.challengeTypes,
279288
};

src/shared/reducers/challenge-listing/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function onGetActiveChallengesDone(state, { error, payload }) {
104104
challenges,
105105
// lastUpdateOfActiveChallenges: Date.now(),
106106
loadingActiveChallengesUUID: '',
107+
allActiveChallengesLoaded: challenges.length >= payload.meta.allChallengesCount,
107108
meta: {
108109
...state.meta,
109110
ongoingChallengesCount: payload.meta.allChallengesCount,
@@ -558,6 +559,7 @@ function onGetOpenForRegistrationChallengesDone(state, { error, payload }) {
558559
...state,
559560
openForRegistrationChallenges: challenges,
560561
loadingOpenForRegistrationChallengesUUID: '',
562+
allOpenForRegistrationChallengesLoaded: challenges.length >= payload.meta.allChallengesCount,
561563
meta: {
562564
...state.meta,
563565
openChallengesCount: payload.meta.allChallengesCount,
@@ -577,6 +579,7 @@ function onGetMyChallengesDone(state, { error, payload }) {
577579
...state,
578580
myChallenges: challenges,
579581
loadingMyChallengesUUID: '',
582+
allMyChallengesLoaded: challenges.length >= payload.meta.allChallengesCount,
580583
meta: {
581584
...state.meta,
582585
myChallengesCount: payload.meta.allChallengesCount,
@@ -619,7 +622,9 @@ function create(initialState) {
619622
return handleActions({
620623
[a.dropChallenges]: state => ({
621624
...state,
622-
// allActiveChallengesLoaded: false,
625+
allActiveChallengesLoaded: false,
626+
allMyChallengesLoaded: false,
627+
allOpenForRegistrationChallengesLoaded: false,
623628
// allPastChallengesLoaded: false,
624629
// allReviewOpportunitiesLoaded: false,
625630
challenges: [],
@@ -754,7 +759,9 @@ function create(initialState) {
754759
},
755760
}),
756761
}, _.defaults(_.clone(initialState) || {}, {
757-
// allActiveChallengesLoaded: false,
762+
allActiveChallengesLoaded: false,
763+
allMyChallengesLoaded: false,
764+
allOpenForRegistrationChallengesLoaded: false,
758765
// allPastChallengesLoaded: false,
759766
allReviewOpportunitiesLoaded: false,
760767

src/shared/utils/url.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ export function updateQuery(update) {
4949
if (_.isArray(value) && value.length > 0) filterArray.push(value.map(item => `${key}[]=${item}`).join('&'));
5050
// eslint-disable-next-line max-len
5151
else if (_.isUndefined(value) || _.isEmpty(value) || (_.isArray(value) && value.length === 0)) delete query[key];
52-
else query += `${key}=${value}`;
52+
else {
53+
const separator = query === '?' ? '' : '&';
54+
query += `${separator}${key}=${value}`;
55+
}
5356
});
5457
if (query === '?') {
5558
if (filterArray.length > 0) {

0 commit comments

Comments
 (0)