diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index f3f9e685a..da956183e 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -2,8 +2,8 @@ import React, { useEffect } from 'react'; import Head from 'next/head'; import { useRouter } from 'next/router'; import Script from 'next/script'; -import { INTERNXT_URL, EXCLUDED_PATHS_FOR_BANNER } from '@/constants'; -import { GlobalDialog, useGlobalDialog } from '@/contexts/GlobalUIManager'; +import { INTERNXT_URL } from '@/constants'; +import { useGlobalDialog } from '@/contexts/GlobalUIManager'; import { handleImpact } from '@/services/impact.service'; import { saveGclidToCookie } from '@/lib/cookies'; @@ -40,11 +40,8 @@ export default function Layout({ robots, }: LayoutProps) { const router = useRouter(); - const { dialogIsOpen } = useGlobalDialog(); const pathname = pathnameForSEO ? pathnameForSEO : router.pathname === '/' ? '' : router.pathname; const lang = router.locale; - const shouldShowBanner = !EXCLUDED_PATHS_FOR_BANNER.includes(pathname) && dialogIsOpen(GlobalDialog.TopBanner); - const langToUpperCase = lang?.toLocaleUpperCase() as string; const imagePreview = imageLang.has(langToUpperCase) ? langToUpperCase : 'EN'; @@ -111,14 +108,9 @@ export default function Layout({ + - - + +
{children}
{/* */} diff --git a/src/services/impact.service.ts b/src/services/impact.service.ts index ea1b8b589..165e5ab32 100644 --- a/src/services/impact.service.ts +++ b/src/services/impact.service.ts @@ -11,6 +11,8 @@ const sendImpactTrack = ({ ip, userAgent, page, + irclickid, + utmMedium, }: { randomUUID: string; ip?: string; @@ -19,6 +21,8 @@ const sendImpactTrack = ({ url: string; referrer: string; }; + irclickid?: string | null; + utmMedium?: string | null; }): Promise => { const nowInTimestamp = moment().format('YYYY-MM-DDTHH:mm:ss.sssZ'); @@ -31,6 +35,12 @@ const sendImpactTrack = ({ page, }, type: 'page', + ...(irclickid && { + properties: { + irclickid, + ...(utmMedium && { partner_id: utmMedium }), + }, + }), }); }; @@ -54,6 +64,11 @@ export const handleImpact = async ({ console.warn('IP lookup service unavailable, defaulting to undefined', error); ip = undefined; } + + const urlParams = new URLSearchParams(window.location.search); + const irclickid = urlParams.get('irclickid'); + const utmMedium = urlParams.get('utm_medium'); + const impactAnonymousId = getCookie('impactAnonymousId'); const randomUUID = impactAnonymousId ?? crypto.randomUUID(); @@ -63,11 +78,29 @@ export const handleImpact = async ({ const anonymousDate = new Date(); anonymousDate.setFullYear(anonymousDate.getFullYear() + 10); + const trackingExpiration = new Date(); + trackingExpiration.setDate(trackingExpiration.getDate() + 30); + document.cookie = `impactSource=${source};expires=${expirationDate.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`; document.cookie = `impactAnonymousId=${randomUUID};expires=${anonymousDate.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`; + if (irclickid) { + document.cookie = `impactClickId=${irclickid};expires=${trackingExpiration.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`; + } + + if (utmMedium) { + document.cookie = `impactPartnerId=${utmMedium};expires=${trackingExpiration.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`; + } + try { - await sendImpactTrack({ randomUUID, ip, userAgent, page }); + await sendImpactTrack({ + randomUUID, + ip, + userAgent, + page, + irclickid, + utmMedium, + }); } catch (error) { console.warn('Analytics tracking failed:', error); }