UNPKG

ice.fo.utils

Version:

46 lines (34 loc) 1.17 kB
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; }