Files
kita-planer/src/components/analytics/umami-analytics.tsx
T
2026-05-11 16:06:33 +02:00

52 lines
1.5 KiB
TypeScript

import Script from "next/script";
import { marketingFeatureSlugs } from "@/lib/marketing/features";
const publicAnalyticsPaths = new Set([
"/",
"/impressum",
"/datenschutz",
"/login",
"/register",
...marketingFeatureSlugs.map((slug) => `/features/${slug}`),
]);
export function UmamiAnalytics() {
const scriptUrl = process.env.NEXT_PUBLIC_UMAMI_SCRIPT_URL;
const websiteId = process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID;
const domains = process.env.NEXT_PUBLIC_UMAMI_DOMAINS;
if (!scriptUrl || !websiteId) {
return null;
}
return (
<>
<Script id="umami-before-send" strategy="afterInteractive">
{`
window.kitaPlanerUmamiBeforeSend = function (_type, payload) {
try {
var url = new URL(payload && payload.url ? payload.url : window.location.href, window.location.origin);
var path = url.pathname.length > 1 && url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname;
var allowedPaths = ${JSON.stringify(Array.from(publicAnalyticsPaths))};
return allowedPaths.indexOf(path) === -1 ? false : payload;
} catch (_error) {
return false;
}
};
`}
</Script>
<Script
src={scriptUrl}
strategy="afterInteractive"
data-website-id={websiteId}
data-domains={domains}
data-exclude-search="true"
data-exclude-hash="true"
data-do-not-track="true"
data-before-send="kitaPlanerUmamiBeforeSend"
/>
</>
);
}