From a16cb76d758aa89a55dd7e04c96568c0faddd588 Mon Sep 17 00:00:00 2001 From: jaaaaavier Date: Tue, 12 May 2026 08:39:40 +0200 Subject: [PATCH 1/4] Update Layout.tsx --- src/components/layout/Layout.tsx | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index f3f9e685a..80f776e70 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,9 @@ export default function Layout({ robots, }: LayoutProps) { const router = useRouter(); - const { dialogIsOpen } = useGlobalDialog(); + 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 +109,9 @@ export default function Layout({ + - - + +
{children}
{/* */} From 6317199c7ea54437c257c57c27de46acd69e2ea5 Mon Sep 17 00:00:00 2001 From: jaaaaavier Date: Tue, 12 May 2026 08:52:57 +0200 Subject: [PATCH 2/4] Update Layout.tsx --- src/components/layout/Layout.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx index 80f776e70..da956183e 100644 --- a/src/components/layout/Layout.tsx +++ b/src/components/layout/Layout.tsx @@ -40,7 +40,6 @@ export default function Layout({ robots, }: LayoutProps) { const router = useRouter(); - useGlobalDialog(); const pathname = pathnameForSEO ? pathnameForSEO : router.pathname === '/' ? '' : router.pathname; const lang = router.locale; const langToUpperCase = lang?.toLocaleUpperCase() as string; From ea7357e6fc2d0aae8356c6837c9cc8c8f4432d70 Mon Sep 17 00:00:00 2001 From: jaaaaavier Date: Tue, 12 May 2026 10:06:58 +0200 Subject: [PATCH 3/4] Update impact.service.ts --- src/services/impact.service.ts | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/services/impact.service.ts b/src/services/impact.service.ts index ea1b8b589..05c5db4c3 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(); @@ -66,8 +81,23 @@ export const handleImpact = async ({ 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); } From 674b32124ade95e7806ab8bd2644abdf5cde9205 Mon Sep 17 00:00:00 2001 From: jaaaaavier Date: Tue, 12 May 2026 10:20:33 +0200 Subject: [PATCH 4/4] Update impact.service.ts --- src/services/impact.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/services/impact.service.ts b/src/services/impact.service.ts index 05c5db4c3..165e5ab32 100644 --- a/src/services/impact.service.ts +++ b/src/services/impact.service.ts @@ -78,6 +78,9 @@ 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=/`;