1
0
mirror of https://github.com/XFox111/my-website.git synced 2026-04-22 07:28:01 +03:00

fix: CLARITY_ID and CLARITY_CONSENT variables are baked in on build time

This commit is contained in:
2024-08-21 12:12:29 +00:00
parent a217d0a96a
commit 4d1662b6ee
6 changed files with 31 additions and 19 deletions
+3 -3
View File
@@ -1,12 +1,12 @@
"use client";
import { acceptCookies, dismissCookies, getCookieChoice, rejectCookies, requireExcplicitConsent } from "@/_utils/analytics/client";
import { acceptCookies, dismissCookies, getCookieChoice, rejectCookies } from "@/_utils/analytics/client";
import { Dismiss24Regular } from "@fluentui/react-icons";
import React, { useCallback, useEffect, useState } from "react";
import Button from "./Button";
import cls from "./CookieBanner.module.scss";
const CookieBanner: React.FC = () =>
const CookieBanner: React.FC<{ askForConsent: boolean; }> = props =>
{
const [visible, setVisible] = useState(false);
@@ -56,7 +56,7 @@ const CookieBanner: React.FC = () =>
</p>
</Button>
{ requireExcplicitConsent ?
{ props.askForConsent ?
<div className={ cls.controls }>
<Button onClick={ accept }>Accept</Button>
<Button onClick={ reject }>Reject</Button>
-1
View File
@@ -10,7 +10,6 @@ const RevokeConsentButton: React.FC = () =>
useEffect(() =>
{
console.log("getCookieChoice", getCookieChoice());
setHasConsent(getCookieChoice() === "accepted");
}, []);
-2
View File
@@ -17,8 +17,6 @@ export const dismissCookies = (): void =>
setCookie("CC", "", 1209600); // 14 days
};
export const requireExcplicitConsent: boolean = process.env.NEXT_PUBLIC_CLARITY_CONSENT === "1";
export const getCookieChoice = (): "accepted" | "rejected" | "acknowledged" | "none" =>
{
switch (getCookie("CC"))
+16 -1
View File
@@ -1,10 +1,25 @@
import { unstable_noStore } from "next/cache";
import { headers } from "next/headers";
/**
* Check if Clarity is enabled
* @returns true if Clarity is enabled
*/
export const analyticsEnabled = (): boolean => !!process.env.CLARITY_ID;
export const analyticsEnabled = (): boolean =>
{
unstable_noStore();
return !!process.env.CLARITY_ID;
};
/**
* Check if Clarity requires explicit consent
* @returns true if Clarity requires explicit consent
*/
export const requireExcplicitConsent = (): boolean =>
{
unstable_noStore();
return process.env.CLARITY_CONSENT === "1";
};
/**
* Check if Clarity is enabled and the browser didn't send a DNT signal
+2 -2
View File
@@ -5,7 +5,7 @@ import { PropsWithChildren } from "react";
import CookieBanner from "./_components/CookieBanner";
import Footer from "./_components/Footer";
import Header from "./_components/Header";
import { canLoadAnalytics } from "./_utils/analytics/server";
import { canLoadAnalytics, requireExcplicitConsent } from "./_utils/analytics/server";
import fonts from "./fonts";
import "./globals.scss";
@@ -28,7 +28,7 @@ export default function RootLayout(props: PropsWithChildren)
<Script id="ms-clarity" src="/clarity.js" data-id={ process.env.CLARITY_ID } />
}
<body>
{ canLoadAnalytics() && <CookieBanner /> }
{ canLoadAnalytics() && <CookieBanner askForConsent={ requireExcplicitConsent() } /> }
<Header />
{ props.children }
<Footer />