From e86940b6a3eb4a7265ed7b85bb0cfa9b2a777414 Mon Sep 17 00:00:00 2001 From: David Sevilla Martin Date: Sun, 15 Mar 2020 09:39:22 -0400 Subject: [PATCH] common: remove falsy params when using app.route() --- js/src/common/Application.ts | 7 +++++++ js/src/forum/routes.ts | 10 ++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/js/src/common/Application.ts b/js/src/common/Application.ts index 797ccecb1..813fe8f14 100644 --- a/js/src/common/Application.ts +++ b/js/src/common/Application.ts @@ -200,6 +200,13 @@ export default abstract class Application { if (!route) throw new Error(`Route '${name}' does not exist`); const url = route.path.replace(/:([^\/]+)/g, (m, key) => extract(params, key)); + + // Remove falsy values in params to avoid + // having urls like '/?sort&q' + for (const key in params) { + if (params.hasOwnProperty(key) && !params[key]) delete params[key]; + } + const queryString = m.buildQueryString(params); const prefix = m.route.prefix === '' ? this.forum.attribute('basePath') : ''; diff --git a/js/src/forum/routes.ts b/js/src/forum/routes.ts index 64ac062c9..efaf8edb4 100644 --- a/js/src/forum/routes.ts +++ b/js/src/forum/routes.ts @@ -30,13 +30,11 @@ export default app => { app.route.discussion = (discussion: Discussion, near?: number): string => { const slug = discussion?.slug(); const hasNear = near && near !== 1; - const params = { + + return app.route(hasNear ? 'discussion.near' : 'discussion', { id: discussion.id() + (slug.trim() ? '-' + slug : ''), - }; - - if (hasNear) params['near'] = near; - - return app.route(hasNear ? 'discussion.near' : 'discussion', params); + near: hasNear && near, + }); }; /**