Skip to content

Commit d2e22e3

Browse files
authored
LKE-8090 fix(queryParsing): use URLSearchParams to get url query params #38
1 parent 022fbeb commit d2e22e3

1 file changed

Lines changed: 45 additions & 46 deletions

File tree

public/js/main.js

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -111,57 +111,56 @@ async function runQueryByID(query) {
111111
* set queryParams as a json object containing the query parameters
112112
*/
113113
function parseQueryParams() {
114-
const url = location.search;
115-
const query = url.substr(1);
116-
const result = {global: {}, templateFields: {}};
117-
query.split('&').forEach((param) => {
118-
const item = param.split('=');
119-
const parameter = getParameter(item);
120-
if (parameter) {
121-
if (parameter.type === 'global') {
122-
result.global[decodeURIComponent(parameter.key)] = parameter.value;
123-
} else if (parameter.type === 'templateField') {
124-
result.templateFields[decodeURIComponent(parameter.key)] = parameter.value;
125-
}
126-
}
127-
});
128-
queryParams = result;
114+
const result = {global: {}, templateFields: {}};
115+
const parameters = new URLSearchParams(location.search);
116+
parameters.forEach((value, key) => {
117+
const parameter = getParameter(value, key);
118+
if (parameter) {
119+
if (parameter.type === 'global') {
120+
result.global[decodeURIComponent(parameter.key)] = parameter.value;
121+
} else if (parameter.type === 'templateField') {
122+
result.templateFields[decodeURIComponent(parameter.key)] = parameter.value;
123+
}
124+
}
125+
});
126+
queryParams = result;
129127
}
130128

131129
/**
132130
* check if the query-param is allowed
133-
* @param item
134-
*/
135-
function getParameter(item) {
136-
const allowedParams = {
137-
oneOf: [
138-
'sourceKey',
139-
'limit',
140-
'queryId',
141-
'queryName'
142-
],
143-
startWith: [
144-
'param_number_',
145-
'param_ids_',
146-
'param_string_'
147-
]
148-
};
149-
const decodedValue = decodeURIComponent(item[1]);
150-
if (allowedParams.oneOf.includes(item[0])) {
151-
return {key: item[0], value: decodedValue, type: 'global'};
152-
} else {
153-
const prefix = allowedParams.startWith.find((prefix) => item[0].startsWith(prefix));
154-
switch (prefix) {
155-
case 'param_number_':
156-
return {key: item[0].replace('param_number_', ''), value: +decodedValue, type: 'templateField'};
157-
case 'param_ids_':
158-
return {key: item[0].replace('param_ids_', ''), value: decodedValue, type: 'templateField'};
159-
case 'param_string_':
160-
return {key: item[0].replace('param_string_', ''), value: decodedValue, type: 'templateField'};
161-
default:
162-
return false;
163-
}
131+
* @param value
132+
* @param key
133+
*/
134+
function getParameter(value, key) {
135+
const allowedParams = {
136+
oneOf: [
137+
'sourceKey',
138+
'limit',
139+
'queryId',
140+
'queryName'
141+
],
142+
startWith: [
143+
'param_number_',
144+
'param_ids_',
145+
'param_string_'
146+
]
147+
};
148+
const decodedValue = decodeURIComponent(value);
149+
if (allowedParams.oneOf.includes(key)) {
150+
return {key: key, value: decodedValue, type: 'global'};
151+
} else {
152+
const prefix = allowedParams.startWith.find((prefix) => key.startsWith(prefix));
153+
switch (prefix) {
154+
case 'param_number_':
155+
return {key: key.replace('param_number_', ''), value: +decodedValue, type: 'templateField'};
156+
case 'param_ids_':
157+
return {key: key.replace('param_ids_', ''), value: decodedValue, type: 'templateField'};
158+
case 'param_string_':
159+
return {key: key.replace('param_string_', ''), value: decodedValue, type: 'templateField'};
160+
default:
161+
return false;
164162
}
163+
}
165164
}
166165

167166
/**

0 commit comments

Comments
 (0)