From 77809140fd7edd63d77aac2b0ec4040993a55c49 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(() => {