diff --git a/app/client/src/utils/getQueryParamsObject.test.ts b/app/client/src/utils/getQueryParamsObject.test.ts new file mode 100644 index 0000000000..7d75c49c3a --- /dev/null +++ b/app/client/src/utils/getQueryParamsObject.test.ts @@ -0,0 +1,12 @@ +import { getQueryParamsFromString } from "./getQueryParamsObject"; + +describe("getQueryParamsObject test", () => { + it("Check whether getQueryParamsFromString returns object with input string containing new lines", () => { + const output = getQueryParamsFromString( + "branch=new&text=%3Cp%3EHello%3C%2Fp%3E%0A%3Cp%3EWorld!%3C%2Fp%3E", + ); + + expect(output.text).toEqual("
Hello
\nWorld!
"); + expect(output.branch).toEqual("new"); + }); +}); diff --git a/app/client/src/utils/getQueryParamsObject.ts b/app/client/src/utils/getQueryParamsObject.ts index a52dba1624..76413de9d8 100644 --- a/app/client/src/utils/getQueryParamsObject.ts +++ b/app/client/src/utils/getQueryParamsObject.ts @@ -8,14 +8,7 @@ export const getQueryParamsFromString = (search: string | undefined) => { if (!search) return {}; try { - return JSON.parse( - '{"' + - decodeURI(search) - .replace(/"/g, '\\"') - .replace(/&/g, '","') - .replace(/=/g, '":"') + - '"}', - ); + return Object.fromEntries(new URLSearchParams(search).entries()); } catch (e) { log.error(e, "error parsing search string");