import { removeTrackingParameters } from './productUrl'; export const ATX_PARAM = 'atx'; export const ATX_VALUE = '1'; function removeAtx(url: URL): string[] { const values: string[] = []; for (const key of Array.from(url.searchParams.keys())) { if (key.toLowerCase() === ATX_PARAM) { values.push(...url.searchParams.getAll(key)); url.searchParams.delete(key); } } return values; } export function withShareLandingParam(cleanUrl: string | null): string | null { if (!cleanUrl) return null; try { const url = new URL(cleanUrl); if (url.protocol !== 'https:') return null; url.hash = ''; removeAtx(url); removeTrackingParameters(url); url.searchParams.set(ATX_PARAM, ATX_VALUE); return url.toString(); } catch { return null; } } export function stripShareLandingParam(value: string | null): string | null { if (!value) return value; try { const url = new URL(value); return removeAtx(url).length ? url.toString() : value; } catch { return value; } } let consumed = false; export function consumeShareLanding(win: Pick): boolean { if (consumed) return false; consumed = true; try { const url = new URL(win.location.href); const values = removeAtx(url); if (!values.length) return false; try { win.history.replaceState(win.history.state, '', url.pathname + url.search + url.hash); } catch { /* sandboxed history */ } return values.includes(ATX_VALUE); } catch { return false; } }