chore: enable posthog pageview. (#4888)

This commit is contained in:
Prateek Shourya
2024-06-20 16:52:05 +05:30
committed by GitHub
parent 280a69bd3c
commit f06cce44a3
2 changed files with 38 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
import { FC, ReactNode, useEffect } from "react"; import { FC, ReactNode, useEffect } from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import dynamic from "next/dynamic";
import posthog from "posthog-js"; import posthog from "posthog-js";
import { PostHogProvider as PHProvider } from "posthog-js/react"; import { PostHogProvider as PHProvider } from "posthog-js/react";
// constants // constants
@@ -10,7 +11,8 @@ import { GROUP_WORKSPACE } from "@/constants/event-tracker";
import { getUserRole } from "@/helpers/user.helper"; import { getUserRole } from "@/helpers/user.helper";
// hooks // hooks
import { useWorkspace, useUser, useInstance } from "@/hooks/store"; import { useWorkspace, useUser, useInstance } from "@/hooks/store";
// types // dynamic imports
const PostHogPageView = dynamic(() => import("@/lib/posthog-view"), { ssr: false });
export interface IPosthogWrapper { export interface IPosthogWrapper {
children: ReactNode; children: ReactNode;
@@ -58,7 +60,12 @@ const PostHogProvider: FC<IPosthogWrapper> = observer((props) => {
}, []); }, []);
if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST && is_telemetry_enabled) if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST && is_telemetry_enabled)
return <PHProvider client={posthog}>{children}</PHProvider>; return (
<PHProvider client={posthog}>
<PostHogPageView />
{children}
</PHProvider>
);
return <>{children}</>; return <>{children}</>;
}); });

View File

@@ -0,0 +1,29 @@
'use client'
import { useEffect } from "react";
import { usePathname, useSearchParams } from "next/navigation";
// posthog
import { usePostHog } from 'posthog-js/react';
export default function PostHogPageView(): null {
const pathname = usePathname();
const searchParams = useSearchParams();
const posthog = usePostHog();
useEffect(() => {
// Track pageviews
if (pathname && posthog) {
let url = window.origin + pathname
if (searchParams.toString()) {
url = url + `?${searchParams.toString()}`
}
posthog.capture(
'$pageview',
{
'$current_url': url,
}
)
}
}, [pathname, searchParams, posthog])
return null
}