Skip to content

Commit c3afa36

Browse files
authored
Merge pull request #327 from elfman/issue187
Fixes #187
2 parents fa2d410 + a3ec4f5 commit c3afa36

File tree

1 file changed

+23
-3
lines changed
  • src/shared/reducers/challenge-listing

1 file changed

+23
-3
lines changed

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,20 @@ function onSelectCommunity(state, { payload }) {
167167
* @return {Object}
168168
*/
169169
function onSetFilter(state, { payload }) {
170-
updateQuery({ filter: payload });
170+
const filter = _.clone(payload);
171+
172+
if (filter) {
173+
if (filter.tags && !_.isArray(filter.tags)) {
174+
filter.tags = _.values(filter.tags);
175+
}
176+
if (filter.subtracks && !_.isArray(filter.subtracks)) {
177+
filter.subtracks = _.values(filter.subtracks);
178+
}
179+
}
180+
updateQuery({ filter });
171181
return {
172182
...state,
173-
filter: payload,
183+
filter,
174184

175185
/* Page numbers of past/upcoming challenges depend on the filters. To keep
176186
* the code simple we just reset them each time a filter is modified. */
@@ -272,7 +282,17 @@ export function factory(req) {
272282
const state = {};
273283

274284
if (req) {
275-
state.filter = req.query.filter;
285+
let filter = {};
286+
if (req.query && req.query.filter) {
287+
filter = _.clone(req.query.filter);
288+
if (filter.tags && !_.isArray(filter.tags)) {
289+
filter.tags = _.values(filter.tags);
290+
}
291+
if (filter.subtracks && !_.isArray(filter.subtracks)) {
292+
filter.subtracks = _.values(filter.subtracks);
293+
}
294+
}
295+
state.filter = filter;
276296

277297
/* TODO: OK, fine, this validation of dates does the server-side part of
278298
* the trick, while the frontend part (removing them from URL) is done

0 commit comments

Comments
 (0)