Skip to content

Commit 3c9f242

Browse files
committed
Fix issue #187
1 parent 9bae199 commit 3c9f242

File tree

2 files changed

+19
-6
lines changed
  • src/shared
    • components/challenge-listing/Filters/FiltersPanel
    • utils/challenge-listing

2 files changed

+19
-6
lines changed

src/shared/components/challenge-listing/Filters/FiltersPanel/index.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,17 @@ export default function FiltersPanel({
5353

5454
const mapOps = item => ({ label: item, value: item });
5555

56+
let filterStateTags = null;
57+
if (filterState.tags) {
58+
filterStateTags = Array.isArray(filterState.tags) ? filterState.tags.join(',') :
59+
Object.keys(filterState.tags).map(key => filterState.tags[key]).join(',');
60+
}
61+
let filterStateSubtracks = null;
62+
if (filterState.subtracks) {
63+
filterStateSubtracks = Array.isArray(filterState.subtracks) ? filterState.subtracks.join(',') :
64+
Object.keys(filterState.subtracks).map(key => filterState.subtracks[key]).join(',');
65+
}
66+
5667
return (
5768
<div styleName={className}>
5869
<div styleName="header">
@@ -74,7 +85,7 @@ export default function FiltersPanel({
7485
}}
7586
options={validKeywords.map(mapOps)}
7687
simpleValue
77-
value={filterState.tags ? filterState.tags.join(',') : null}
88+
value={filterStateTags}
7889
/>
7990
</div>
8091
<div styleName="filter community">
@@ -100,9 +111,7 @@ export default function FiltersPanel({
100111
}}
101112
options={validSubtracks.map(mapOps)}
102113
simpleValue
103-
value={
104-
filterState.subtracks ? filterState.subtracks.join(',') : null
105-
}
114+
value={filterStateSubtracks}
106115
/>
107116
</div>
108117
<div styleName="filter dates">

src/shared/utils/challenge-listing/filter.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ function filterBySubtracks(challenge, state) {
113113
* it probably does not work in all cases. It should be double-checked,
114114
* why challenge subtracks in challenge objects are different from those
115115
* return from the API as the list of possible subtracks. */
116-
const filterSubtracks = state.subtracks.map(item =>
116+
const subtracks = Array.isArray(state.subtracks) ? state.subtracks :
117+
Object.keys(state.subtracks).map(key => state.subtracks[key]);
118+
const filterSubtracks = subtracks.map(item =>
117119
item.toLowerCase().replace(/ /g, ''));
118120
const challengeSubtrack = challenge.subTrack.toLowerCase().replace(/_/g, '');
119121
return filterSubtracks.includes(challengeSubtrack);
@@ -123,7 +125,9 @@ function filterByTags(challenge, state) {
123125
if (!state.tags) return true;
124126
const str = `${challenge.name} ${challenge.platforms} ${
125127
challenge.technologies}`.toLowerCase();
126-
return state.tags.some(tag => str.includes(tag.toLowerCase()));
128+
const tags = Array.isArray(state.tags) ? state.tags :
129+
Object.keys(state.tags).map(key => state.tags[key]);
130+
return tags.some(tag => str.includes(tag.toLowerCase()));
127131
}
128132

129133
function filterByText(challenge, state) {

0 commit comments

Comments
 (0)