Commit e3b40c10 authored by Max Alekseenko's avatar Max Alekseenko

add custom path param and rework logic

parent e3ec83b6
...@@ -155,17 +155,30 @@ const MarketplaceApp = () => { ...@@ -155,17 +155,30 @@ const MarketplaceApp = () => {
} catch (err) {} } catch (err) {}
try { try {
// get anchor and custom params from search and remove reserved ones // get hash and params (using asPath to avoid conflicts with dynamic route params)
const customHash = window.location.hash; const [ , queryAndHash ] = router.asPath.split('?');
const customParams = new URLSearchParams(window.location.search); const [ queryString, hash ] = queryAndHash ? queryAndHash.split('#') : [ '', '' ];
const customHash = hash ? `#${ hash }` : '';
const customParams = new URLSearchParams(queryString);
// remove reserved params
[ 'url', 'action' ].forEach((param) => customParams.delete(param)); [ 'url', 'action' ].forEach((param) => customParams.delete(param));
if (customParams.toString() || customHash) { if (customParams.toString() || customHash) {
const targetUrl = new URL(data.url); const targetUrl = new URL(data.url);
const targetParams = new URLSearchParams(targetUrl.search); const targetParams = new URLSearchParams(targetUrl.search);
let customPath = customParams.get('path');
if (customPath) {
customPath = customPath.startsWith('/') ? customPath : `/${ customPath }`;
targetUrl.pathname = customPath;
customParams.delete('path');
}
customParams.forEach((value, key) => { customParams.forEach((value, key) => {
targetParams.append(key, value); targetParams.append(key, value);
}); });
targetUrl.search = targetParams.toString(); targetUrl.search = targetParams.toString();
targetUrl.hash = customHash; targetUrl.hash = customHash;
return targetUrl.toString(); return targetUrl.toString();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment