From 8f39ec3d35742bd3a1e025d4f2707a57dc380035 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Tue, 10 Feb 2026 00:01:31 +0100 Subject: [PATCH] fix: resolve lint errors in layout and route by updating analytics interface --- app/[locale]/layout.tsx | 4 ++-- app/api/contact/route.ts | 4 ++-- lib/services/analytics/analytics-service.ts | 11 +++++++++++ lib/services/analytics/noop-analytics-service.ts | 12 ++++++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 1e7725c..6c6fb20 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -118,8 +118,8 @@ export default async function RootLayout({ const { headers } = await import("next/headers"); const requestHeaders = await headers(); - if ("setServerContext" in serverServices.analytics) { - (serverServices.analytics as any).setServerContext({ + if (serverServices.analytics.setServerContext) { + serverServices.analytics.setServerContext({ userAgent: requestHeaders.get("user-agent") || undefined, language: requestHeaders.get("accept-language")?.split(",")[0] || undefined, diff --git a/app/api/contact/route.ts b/app/api/contact/route.ts index c3f020d..86ae2f4 100644 --- a/app/api/contact/route.ts +++ b/app/api/contact/route.ts @@ -10,8 +10,8 @@ export async function POST(req: Request) { // Set analytics context from request headers for high-fidelity server-side tracking // This fulfills the "server-side via nextjs proxy" requirement - if ("setServerContext" in services.analytics) { - (services.analytics as any).setServerContext({ + if (services.analytics.setServerContext) { + services.analytics.setServerContext({ userAgent: req.headers.get("user-agent") || undefined, language: req.headers.get("accept-language")?.split(",")[0] || undefined, referrer: req.headers.get("referer") || undefined, diff --git a/lib/services/analytics/analytics-service.ts b/lib/services/analytics/analytics-service.ts index b9a1477..cf507df 100644 --- a/lib/services/analytics/analytics-service.ts +++ b/lib/services/analytics/analytics-service.ts @@ -73,4 +73,15 @@ export interface AnalyticsService { * ``` */ trackPageview(url?: string): void; + + /** + * Set the server-side context for the current request. + * This is used for server-side tracking (e.g. from Next.js proxy). + */ + setServerContext?(context: { + userAgent?: string; + language?: string; + referrer?: string; + ip?: string; + }): void; } diff --git a/lib/services/analytics/noop-analytics-service.ts b/lib/services/analytics/noop-analytics-service.ts index b65e17d..73d5f49 100644 --- a/lib/services/analytics/noop-analytics-service.ts +++ b/lib/services/analytics/noop-analytics-service.ts @@ -68,4 +68,16 @@ export class NoopAnalyticsService implements AnalyticsService { trackPageview(_url?: string) { // intentionally noop - analytics are disabled } + + /** + * No-op implementation of setServerContext. + */ + setServerContext(_context: { + userAgent?: string; + language?: string; + referrer?: string; + ip?: string; + }) { + // intentionally noop - analytics are disabled + } }