DEV: Modernise navigation-item query parameter construction (#17926)
Using `URLSearchParams` means that we don't have to manually encode/join strings
This commit is contained in:
parent
a185713e5f
commit
6e5f08543e
|
@ -42,13 +42,14 @@ export default Component.extend(FilterModeMixin, {
|
||||||
const content = this.content;
|
const content = this.content;
|
||||||
|
|
||||||
let href = content.get("href");
|
let href = content.get("href");
|
||||||
let queryParams = [];
|
let urlSearchParams = new URLSearchParams();
|
||||||
|
let addParamsEvenIfEmpty = false;
|
||||||
|
|
||||||
// Include the category id if the option is present
|
// Include the category id if the option is present
|
||||||
if (content.get("includeCategoryId")) {
|
if (content.get("includeCategoryId")) {
|
||||||
let categoryId = this.get("content.category.id");
|
let categoryId = this.get("content.category.id");
|
||||||
if (categoryId) {
|
if (categoryId) {
|
||||||
queryParams.push(`category_id=${categoryId}`);
|
urlSearchParams.set("category_id", categoryId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,12 +57,12 @@ export default Component.extend(FilterModeMixin, {
|
||||||
// If no query param is present, add an empty one to ensure a ? is
|
// If no query param is present, add an empty one to ensure a ? is
|
||||||
// appended to the URL.
|
// appended to the URL.
|
||||||
if (content.currentRouteQueryParams) {
|
if (content.currentRouteQueryParams) {
|
||||||
if (content.currentRouteQueryParams.filter && queryParams.length === 0) {
|
if (content.currentRouteQueryParams.filter) {
|
||||||
queryParams.push("");
|
addParamsEvenIfEmpty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (content.currentRouteQueryParams.f) {
|
if (content.currentRouteQueryParams.f) {
|
||||||
queryParams.push(`f=${content.currentRouteQueryParams.f}`);
|
urlSearchParams.set("f", content.currentRouteQueryParams.f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,11 +70,12 @@ export default Component.extend(FilterModeMixin, {
|
||||||
this.siteSettings.desktop_category_page_style ===
|
this.siteSettings.desktop_category_page_style ===
|
||||||
"categories_and_latest_topics_created_date"
|
"categories_and_latest_topics_created_date"
|
||||||
) {
|
) {
|
||||||
queryParams.push("order=created");
|
urlSearchParams.set("order", "created");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queryParams.length) {
|
const queryString = urlSearchParams.toString();
|
||||||
href += `?${queryParams.join("&")}`;
|
if (addParamsEvenIfEmpty || queryString) {
|
||||||
|
href += `?${queryString}`;
|
||||||
}
|
}
|
||||||
this.set("hrefLink", href);
|
this.set("hrefLink", href);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue