diff --git a/next.config.mjs b/next.config.mjs index 4a91a50..0eb4c17 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -26,10 +26,10 @@ const config = { async rewrites() { return [ - { + ...(!!env.POSTHOG_PROXY_PATH && !env.NEXT_PUBLIC_POSTHOG_HOST ? [{ source: "/" + env.POSTHOG_PROXY_PATH + "/:path*", destination: env.NEXT_PUBLIC_POSTHOG_HOST + "/:path*", - }, + }]: []), ]; }, }; diff --git a/src/env.mjs b/src/env.mjs index 9e53157..07e2560 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -32,7 +32,7 @@ const server = z.object({ STRIPE_WEBHOOK_SECRET: z.string().nullish(), STRIPE_MONTHLY_PRICE_ID: z.string().nullish(), STRIPE_ANNUAL_PRICE_ID: z.string().nullish(), - POSTHOG_PROXY_PATH: z.string(), + POSTHOG_PROXY_PATH: z.string().nullish(), UPSTASH_REDIS_REST_URL: z.string().nullish(), UPSTASH_REDIS_REST_TOKEN: z.string().nullish(), }); @@ -46,8 +46,8 @@ const client = z.object({ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: z.string().nullish(), NEXT_PUBLIC_CRISP_WEBSITE_ID: z.string().nullish(), NEXT_PUBLIC_POSTHOG_KEY: z.string().nullish(), - NEXT_PUBLIC_POSTHOG_HOST: z.string(), - NEXT_PUBLIC_POSTHOG_PROXY_HOST: z.string(), + NEXT_PUBLIC_POSTHOG_HOST: z.string().nullish(), + NEXT_PUBLIC_POSTHOG_PROXY_HOST: z.string().nullish(), }); /** diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 819e2fa..4ca0309 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -12,7 +12,11 @@ import { env } from "~/env.mjs"; import { type ReactNode, useEffect } from "react"; // Check that PostHog is client-side (used to handle Next.js SSR) -if (typeof window !== "undefined" && !!env.NEXT_PUBLIC_POSTHOG_KEY) { +if ( + typeof window !== "undefined" && + !!env.NEXT_PUBLIC_POSTHOG_KEY && + !!env.NEXT_PUBLIC_POSTHOG_PROXY_HOST +) { posthog.init(env.NEXT_PUBLIC_POSTHOG_KEY, { api_host: env.NEXT_PUBLIC_POSTHOG_PROXY_HOST, // Enable debug mode in development diff --git a/src/server/auth.ts b/src/server/auth.ts index d426426..bd67ae0 100644 --- a/src/server/auth.ts +++ b/src/server/auth.ts @@ -74,7 +74,7 @@ export const authOptions: NextAuthOptions = { ], events: { async signIn(message) { - if (!!env.NEXT_PUBLIC_POSTHOG_KEY) { + if (!!env.NEXT_PUBLIC_POSTHOG_KEY && !!env.NEXT_PUBLIC_POSTHOG_HOST) { const client = new PostHog(env.NEXT_PUBLIC_POSTHOG_KEY, { host: env.NEXT_PUBLIC_POSTHOG_HOST, }); @@ -92,7 +92,7 @@ export const authOptions: NextAuthOptions = { } }, async signOut(message) { - if (!!env.NEXT_PUBLIC_POSTHOG_KEY) { + if (!!env.NEXT_PUBLIC_POSTHOG_KEY && !!env.NEXT_PUBLIC_POSTHOG_HOST) { const session = message.session as unknown as { id: string; sessionToken: string; diff --git a/src/server/posthog.ts b/src/server/posthog.ts index 88fe0c1..5f40d0b 100644 --- a/src/server/posthog.ts +++ b/src/server/posthog.ts @@ -1,8 +1,9 @@ import { PostHog } from "posthog-node"; import { env } from "~/env.mjs"; -export const posthog = !!env.NEXT_PUBLIC_POSTHOG_KEY - ? new PostHog(env.NEXT_PUBLIC_POSTHOG_KEY, { - host: env.NEXT_PUBLIC_POSTHOG_HOST, - }) - : null; +export const posthog = + !!env.NEXT_PUBLIC_POSTHOG_KEY && !!env.NEXT_PUBLIC_POSTHOG_HOST + ? new PostHog(env.NEXT_PUBLIC_POSTHOG_KEY, { + host: env.NEXT_PUBLIC_POSTHOG_HOST, + }) + : null;