diff --git a/clearurls.js b/clearurls.js index 4a616a0..66a4aee 100644 --- a/clearurls.js +++ b/clearurls.js @@ -152,7 +152,7 @@ function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) { let finalURL = domain; - if (fields.toString() !== "") finalURL += "?" + fields.toString(); + if (fields.toString() !== "") finalURL += "?" + urlSearchParamsToString(fields); if (fragments.toString() !== "") finalURL += "#" + fragments.toString(); url = finalURL.replace(new RegExp("\\?&"), "?").replace(new RegExp("#&"), "#"); diff --git a/core_js/tools.js b/core_js/tools.js index f435abb..9e087b6 100644 --- a/core_js/tools.js +++ b/core_js/tools.js @@ -337,3 +337,21 @@ async function sha256(message) { function randomASCII(len) { return [...Array(len)].map(() => (~~(Math.random() * 36)).toString(36)).join(''); } + +/** + * Returns an URLSearchParams as string. + * Does handle spaces correctly. + */ +function urlSearchParamsToString(searchParams) { + const rtn = [] + + searchParams.forEach((value, key) => { + if (value) { + rtn.push(key + '=' + value) + } else { + rtn.push(key) + } + }) + + return rtn.join('&') +}