ice.fo.utils
Version:
46 lines (34 loc) • 1.17 kB
JavaScript
import _trim from 'lodash/trim';
import isExternalUrl from './isExternalUrl';
export default function getPageUrl(page, {
siteId,
$route,
$config,
$store,
} = {}) {
if (isExternalUrl(page)) { return page; } // if external link return link
if (!siteId) {
siteId = $store.getters['ice/siteId'];
}
page = page && !page.startsWith('/') ? `/${page}`.trim() : _trim(page); // check '/' exist or not
let [urlPath, urlQuery] = page.split('?');
const urlParams = new URLSearchParams(urlQuery);
for (const k in $route.query) {
if (!urlParams.has(k)) {
urlParams.set(k, $route.query[k]);
}
}
const implicitSiteId = $config.implicitSiteId;
const segments = urlPath.split('/').filter((i) => i);
const firstSegment = segments[0] || '';
if (firstSegment && implicitSiteId != siteId && firstSegment.toLowerCase() != implicitSiteId) {
const listSiteIds = $store.getters['ice/listSiteIds'];
if (!listSiteIds.includes(firstSegment)) {
segments.unshift(siteId);
}
}
urlPath = `/${segments.join('/')}`;
const query = urlParams.toString();
const url = urlPath + (query ? `?${query}` : '');
return url;
}