From e1b5a33649574927bee82d7541ee84c955c8c389 Mon Sep 17 00:00:00 2001 From: Remi <73385395+itsrubberduck@users.noreply.github.com> Date: Sat, 18 Oct 2025 14:48:13 +0200 Subject: [PATCH] Handle Hotjar consent via local storage --- app/app.vue | 97 ++++++++++++++++++++++++++++- app/composables/useCookieConsent.ts | 19 ++++++ 2 files changed, 114 insertions(+), 2 deletions(-) diff --git a/app/app.vue b/app/app.vue index f9cc8e1..49c748e 100644 --- a/app/app.vue +++ b/app/app.vue @@ -5,12 +5,27 @@ diff --git a/app/composables/useCookieConsent.ts b/app/composables/useCookieConsent.ts index 726652a..a094313 100644 --- a/app/composables/useCookieConsent.ts +++ b/app/composables/useCookieConsent.ts @@ -14,6 +14,7 @@ type CookieConsentValue = { const CONSENT_COOKIE_NAME = 'osq-cookie-consent'; const CONSENT_VERSION = 1; const SIX_MONTHS_IN_SECONDS = 60 * 60 * 24 * 180; +export const HOTJAR_LOCAL_STORAGE_KEY = 'osq-hotjar-consent'; export const useCookieConsent = () => { const consentCookie = useCookie(CONSENT_COOKIE_NAME, { @@ -37,6 +38,24 @@ export const useCookieConsent = () => { { deep: true } ); + if (process.client) { + watch( + consentState, + (value) => { + if (!value) { + window.localStorage.removeItem(HOTJAR_LOCAL_STORAGE_KEY); + return; + } + + window.localStorage.setItem( + HOTJAR_LOCAL_STORAGE_KEY, + value.preferences.analytics ? 'granted' : 'denied' + ); + }, + { deep: true } + ); + } + const hasConsent = computed(() => consentState.value !== null); const analyticsEnabled = computed(() => {