diff --git a/app/assets/javascripts/discourse/app/adapters/rest.js b/app/assets/javascripts/discourse/app/adapters/rest.js index fcd7e4175bc..6209ea9cca8 100644 --- a/app/assets/javascripts/discourse/app/adapters/rest.js +++ b/app/assets/javascripts/discourse/app/adapters/rest.js @@ -47,20 +47,22 @@ export default EmberObject.extend({ appendQueryParams(path, findArgs, extension) { if (findArgs) { if (typeof findArgs === "object") { - const queryString = Object.keys(findArgs) - .reject((k) => !findArgs[k]) - .map((k) => k + "=" + encodeURIComponent(findArgs[k])); + const urlSearchParams = new URLSearchParams(); - if (queryString.length) { - return `${path}${extension ? extension : ""}?${queryString.join( - "&" - )}`; + for (const [key, value] of Object.entries(findArgs)) { + if (value) { + urlSearchParams.set(key, value); + } + } + + const queryString = urlSearchParams.toString(); + + if (queryString) { + return `${path}${extension || ""}?${queryString}`; } } else { // It's serializable as a string if not an object - return `${path}/${encodeURIComponent(findArgs)}${ - extension ? extension : "" - }`; + return `${path}/${encodeURIComponent(findArgs)}${extension || ""}`; } } return path;