From 975b6898f36bc2afc6d9dd0849a7e10a20ef8463 Mon Sep 17 00:00:00 2001 From: Sam Martin Date: Thu, 21 Mar 2024 09:55:36 -0700 Subject: [PATCH 1/2] ensuring we clear out cookie values when consent is revoked --- packages/clarity-js/src/data/metadata.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/clarity-js/src/data/metadata.ts b/packages/clarity-js/src/data/metadata.ts index 26da53c2..bc7ab49f 100644 --- a/packages/clarity-js/src/data/metadata.ts +++ b/packages/clarity-js/src/data/metadata.ts @@ -109,8 +109,9 @@ export function id(): string { export function consent(status: boolean = true): void { if (!status) { - setCookie(Constant.SessionKey, Constant.Empty, 0); - setCookie(Constant.CookieKey, Constant.Empty, 0); + config.track = false; + setCookie(Constant.SessionKey, Constant.Empty, -Number.MAX_VALUE); + setCookie(Constant.CookieKey, Constant.Empty, -Number.MAX_VALUE); clarity.stop(); window.setTimeout(clarity.start, Setting.RestartDelay); return; @@ -119,6 +120,7 @@ export function consent(status: boolean = true): void { if (core.active()) { config.track = true; track(user(), BooleanFlag.True); + save(); } } @@ -279,7 +281,9 @@ function encodeCookieValue(value: string): string { } function setCookie(key: string, value: string, time: number): void { - if (config.track && ((navigator && navigator.cookieEnabled) || supported(document, Constant.Cookie))) { + // only write cookies if we are currently in a cookie writing mode (and they are supported) + // OR if we are trying to write an empty cookie (i.e. clear the cookie value out) + if ((config.track || value == Constant.Empty) && ((navigator && navigator.cookieEnabled) || supported(document, Constant.Cookie))) { // Some browsers automatically url encode cookie values if they are not url encoded. // We therefore encode and decode cookie values ourselves. let encodedValue = encodeCookieValue(value); From 20338e8716c883caabd2ec9715a75e883f5dd500 Mon Sep 17 00:00:00 2001 From: Sam Martin Date: Thu, 21 Mar 2024 13:52:38 -0700 Subject: [PATCH 2/2] skipping additional session cookie writing call --- packages/clarity-js/src/data/metadata.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/clarity-js/src/data/metadata.ts b/packages/clarity-js/src/data/metadata.ts index bc7ab49f..85a43348 100644 --- a/packages/clarity-js/src/data/metadata.ts +++ b/packages/clarity-js/src/data/metadata.ts @@ -120,7 +120,6 @@ export function consent(status: boolean = true): void { if (core.active()) { config.track = true; track(user(), BooleanFlag.True); - save(); } }