From e36efb1edcb23abd0c91f37fe576d1850bbd1cd7 Mon Sep 17 00:00:00 2001 From: Jeff Wong Date: Sun, 22 Dec 2019 00:25:12 -0800 Subject: [PATCH] FIX: ensure that we encode a slug only once if slug generation method is encoded This was re-encoding the search slug each loop - if the category list was not the first category in the list, it'd continually search with a re-encoded search term from the previous iteration. This results in ember 404ing when navigating to raw encoded category slugs of the form /c/encoded-slug-with-non-ascii that have no ID attached. --- app/assets/javascripts/discourse/models/category.js.es6 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 3847a9ea103..a1dada71880 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -308,11 +308,10 @@ Category.reopenClass({ }, findBySlugAndParent(slug, parentCategory) { + if (Discourse.SiteSettings.slug_generation_method === "encoded") { + slug = encodeURI(slug); + } return Category.list().find(category => { - if (Discourse.SiteSettings.slug_generation_method === "encoded") { - slug = encodeURI(slug); - } - return ( category.slug === slug && (category.parentCategory || null) === parentCategory