File tree 1 file changed +23
-3
lines changed
src/shared/reducers/challenge-listing
1 file changed +23
-3
lines changed Original file line number Diff line number Diff line change @@ -167,10 +167,20 @@ function onSelectCommunity(state, { payload }) {
167
167
* @return {Object }
168
168
*/
169
169
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 } ) ;
171
181
return {
172
182
...state ,
173
- filter : payload ,
183
+ filter,
174
184
175
185
/* Page numbers of past/upcoming challenges depend on the filters. To keep
176
186
* the code simple we just reset them each time a filter is modified. */
@@ -272,7 +282,17 @@ export function factory(req) {
272
282
const state = { } ;
273
283
274
284
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 ;
276
296
277
297
/* TODO: OK, fine, this validation of dates does the server-side part of
278
298
* the trick, while the frontend part (removing them from URL) is done
You can’t perform that action at this time.
0 commit comments