diff --git a/src/shared/components/challenge-listing/Filters/FiltersPanel/index.jsx b/src/shared/components/challenge-listing/Filters/FiltersPanel/index.jsx index c61aafbc8e..e203cbb912 100644 --- a/src/shared/components/challenge-listing/Filters/FiltersPanel/index.jsx +++ b/src/shared/components/challenge-listing/Filters/FiltersPanel/index.jsx @@ -32,6 +32,7 @@ import Tooltip from 'components/Tooltip'; import { config, Link } from 'topcoder-react-utils'; import { COMPOSE, PRIORITY } from 'react-css-super-themr'; import { REVIEW_OPPORTUNITY_TYPES } from 'utils/tc'; +import { isFilterEmpty } from 'utils/challenge-listing/buckets'; import CheckmarkIcon from './CheckmarkIcon'; import DateRangePicker from '../DateRangePicker'; import style from './style.scss'; @@ -187,11 +188,12 @@ export default function FiltersPanel({ data: getLabel(community), })); - const disableClearSaveFilterButtons = false; + // const disableClearSaveFilterButtons = false; // const disableClearSaveFilterButtons = isSavingFilter || ( // selectedCommunityId === defaultCommunityId // && _.isEmpty(filterState) // ); + const disableClearSaveFilterButtons = isFilterEmpty(filterState); const mapOps = item => ({ label: item, value: item }); const mapTypes = item => ({ label: item.name, value: item.abbreviation }); diff --git a/src/shared/components/challenge-listing/Listing/Bucket/index.jsx b/src/shared/components/challenge-listing/Listing/Bucket/index.jsx index c915467efd..aad36f8317 100644 --- a/src/shared/components/challenge-listing/Listing/Bucket/index.jsx +++ b/src/shared/components/challenge-listing/Listing/Bucket/index.jsx @@ -32,7 +32,7 @@ export default function Bucket({ challengesUrl, expanded, expand, - // filterState, + filterState, // keepPlaceholders, loading, loadMore, @@ -108,7 +108,7 @@ export default function Bucket({ challengeType={_.find(challengeTypes, { name: challenge.type })} challengesUrl={challengesUrl} newChallengeDetails={newChallengeDetails} - onTechTagClicked={tag => setFilterState({ tags: [tag] })} + onTechTagClicked={tag => setFilterState({ ..._.clone(filterState), tags: [tag] })} openChallengesInNewTabs={openChallengesInNewTabs} prizeMode={prizeMode} key={challenge.id} @@ -213,7 +213,7 @@ Bucket.propTypes = { challenges: PT.arrayOf(PT.shape()).isRequired, challengeTypes: PT.arrayOf(PT.shape()), challengesUrl: PT.string.isRequired, - // filterState: PT.shape().isRequired, + filterState: PT.shape().isRequired, // keepPlaceholders: PT.bool, loading: PT.bool, loadMore: PT.func, diff --git a/src/shared/containers/challenge-listing/Listing/index.jsx b/src/shared/containers/challenge-listing/Listing/index.jsx index 64a3969955..fee463fe3f 100644 --- a/src/shared/containers/challenge-listing/Listing/index.jsx +++ b/src/shared/containers/challenge-listing/Listing/index.jsx @@ -254,12 +254,16 @@ export class ListingContainer extends React.Component { auth.tokenV3, f.front, ); - getMyChallenges( - 0, - f.back, - auth.tokenV3, - f.front, - ); + + // Only retrieve my challenge only when user has login + if (auth.user) { + getMyChallenges( + 0, + f.back, + auth.tokenV3, + f.front, + ); + } // getPastChallenges( // 0, // f.back, diff --git a/src/shared/utils/challenge-listing/buckets.js b/src/shared/utils/challenge-listing/buckets.js index 9b51e3c20f..dcc08de4ce 100644 --- a/src/shared/utils/challenge-listing/buckets.js +++ b/src/shared/utils/challenge-listing/buckets.js @@ -190,4 +190,21 @@ export function sortChangedBucket(sorts, prevSorts) { return ''; } +export function isFilterEmpty(filter) { + return _.isEqual(filter, { + tracks: { + Dev: true, + Des: true, + DS: true, + QA: true, + }, + name: '', + tags: [], + types: [], + groups: [], + startDateStart: null, + endDateEnd: null, + }); +} + export default undefined;