11"use client" ;
22
3+ import { normaliseReferrer } from "@/utils/referrer" ;
4+
35const UTM_STORAGE_KEY = "attribution_params" ;
46const INITIAL_REFERRER_KEY = "initial_referrer" ;
57const INITIAL_REFERRER_COOKIE = "initial_referrer" ;
@@ -46,11 +48,12 @@ const getCookie = (name: string): string | null => {
4648
4749 if ( ! value ) return null ;
4850
49- try {
50- return decodeURIComponent ( value ) ;
51- } catch {
52- return value ;
53- }
51+ const cleanedValue = normaliseReferrer ( value ) ;
52+ const trimmedValue = cleanedValue . trim ( ) ;
53+
54+ if ( ! trimmedValue ) return null ;
55+
56+ return trimmedValue ;
5457} ;
5558
5659const getExternalDocumentReferrer = ( ) : string | null => {
@@ -72,7 +75,7 @@ const getExternalDocumentReferrer = (): string | null => {
7275} ;
7376
7477const storeInitialReferrer = ( referrer : string ) => {
75- localStorage . setItem ( INITIAL_REFERRER_KEY , referrer ) ;
78+ localStorage . setItem ( INITIAL_REFERRER_KEY , normaliseReferrer ( referrer ) ) ;
7679} ;
7780
7881export function captureAttributionParams ( ) {
@@ -125,9 +128,18 @@ export function getStoredAttributionParams(): StoredAttributionParams {
125128 const stored = localStorage . getItem ( UTM_STORAGE_KEY ) ;
126129 const storedInitialReferrer = localStorage . getItem ( INITIAL_REFERRER_KEY ) ;
127130 const cookieReferrer = getCookie ( INITIAL_REFERRER_COOKIE ) ;
128- const initialReferrer = storedInitialReferrer ?? cookieReferrer ;
131+ const initialReferrer =
132+ storedInitialReferrer !== null
133+ ? normaliseReferrer ( storedInitialReferrer )
134+ : cookieReferrer ;
129135
130- if ( ! storedInitialReferrer && initialReferrer ) {
136+ if ( storedInitialReferrer === null && initialReferrer ) {
137+ storeInitialReferrer ( initialReferrer ) ;
138+ } else if (
139+ storedInitialReferrer !== null &&
140+ initialReferrer &&
141+ initialReferrer !== storedInitialReferrer
142+ ) {
131143 storeInitialReferrer ( initialReferrer ) ;
132144 }
133145
0 commit comments