From a066559d63ae0e5ca8a6172d745b64719682ba91 Mon Sep 17 00:00:00 2001 From: Collin Beczak <88843144+CollinBeczak@users.noreply.github.com> Date: Tue, 31 Oct 2023 13:08:07 -0500 Subject: [PATCH] fix project search and tags (#2142) * fix project search and tags * add undefined handler --- .../ChallengeResultList.js | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js b/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js index bee106150..8bbb0d4d0 100644 --- a/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js +++ b/src/components/ChallengePane/ChallengeResultList/ChallengeResultList.js @@ -105,6 +105,27 @@ export class ChallengeResultList extends Component { ? limitUserResults(challengeResultsUnbound) : challengeResultsUnbound; + const uniqueParents = new Set(); + + const projectResults = this.props.challenges?.reduce((result, challenge) => { + if (isNaN(query) && !uniqueParents.has(challenge.parent.id)) { + uniqueParents.add(challenge.parent.id); + result.push(challenge.parent); + } + return result; + }, []); + + + const uniqueParentIds = new Set(); + + const projectIdResults = this.props.unfilteredChallenges?.reduce((result, challenge) => { + if (isNaN(query) && !uniqueParentIds.has(challenge.parent.id)) { + uniqueParentIds.add(challenge.parent.id); + result.push(challenge.parent); + } + return result; + }, []); + const isFetching = _get(this.props, 'fetchingChallenges', []).length > 0 const search = _get(this.props, 'currentSearch.challenges', {}) @@ -120,9 +141,9 @@ export class ChallengeResultList extends Component { const query = search.query ? search.query : this.props.searchFilters.project ? this.props.searchFilters.project : this.props.searchFilters.task let matchedId = [] - if(!isNaN(query) && query) { + if(!isNaN(query) && query && !this.props.history.location.pathname.includes('browse/projects/')) { if(this.props.searchFilters.searchType == "projects"){ - matchedId = _filter(this.props.unfilteredChallenges, (item) => item.parent.id.toString() === query.toString()); + matchedId = _filter(projectIdResults, (item) => item.id.toString() === query.toString()); } else { matchedId = _filter(this.props.unfilteredChallenges, (item) => item.id.toString() === query.toString()); } @@ -158,7 +179,7 @@ export class ChallengeResultList extends Component { ); } - if (!isNaN(query) && query) { + if (!isNaN(query) && query && !this.props.history.location.pathname.includes('browse/projects/')) { // Filters for Task Id if (searchType === "task") { let matchedChallengeId = null; @@ -237,20 +258,19 @@ export class ChallengeResultList extends Component { detectedIds = (