[WEB-1420] chore: considering telemetry settings while capturing events (#4582)
* chore: added telemetry configuration for cloud & selfhosted * taking is_telemetry_enabled field only into consideration --------- Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
This commit is contained in:
parent
268c35a584
commit
f029683152
1 changed files with 12 additions and 27 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
import { FC, ReactNode, useEffect } from "react";
|
import { FC, ReactNode, useEffect } from "react";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import posthog from "posthog-js";
|
import posthog from "posthog-js";
|
||||||
|
|
@ -7,7 +9,7 @@ import { GROUP_WORKSPACE } from "@/constants/event-tracker";
|
||||||
// helpers
|
// helpers
|
||||||
import { getUserRole } from "@/helpers/user.helper";
|
import { getUserRole } from "@/helpers/user.helper";
|
||||||
// hooks
|
// hooks
|
||||||
import { useWorkspace, useUser } from "@/hooks/store";
|
import { useWorkspace, useUser, useInstance } from "@/hooks/store";
|
||||||
// types
|
// types
|
||||||
|
|
||||||
export interface IPosthogWrapper {
|
export interface IPosthogWrapper {
|
||||||
|
|
@ -21,8 +23,9 @@ const PostHogProvider: FC<IPosthogWrapper> = observer((props) => {
|
||||||
membership: { currentProjectRole, currentWorkspaceRole },
|
membership: { currentProjectRole, currentWorkspaceRole },
|
||||||
} = useUser();
|
} = useUser();
|
||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
// router
|
const { instance } = useInstance();
|
||||||
// const router = useAppRouter();
|
|
||||||
|
const is_telemetry_enabled = instance?.is_telemetry_enabled || false;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
|
|
@ -32,12 +35,14 @@ const PostHogProvider: FC<IPosthogWrapper> = observer((props) => {
|
||||||
first_name: user.first_name,
|
first_name: user.first_name,
|
||||||
last_name: user.last_name,
|
last_name: user.last_name,
|
||||||
email: user.email,
|
email: user.email,
|
||||||
// use_case: user.use_case, FIXME:
|
|
||||||
workspace_role: currentWorkspaceRole ? getUserRole(currentWorkspaceRole) : undefined,
|
workspace_role: currentWorkspaceRole ? getUserRole(currentWorkspaceRole) : undefined,
|
||||||
project_role: currentProjectRole ? getUserRole(currentProjectRole) : undefined,
|
project_role: currentProjectRole ? getUserRole(currentProjectRole) : undefined,
|
||||||
});
|
});
|
||||||
|
if (currentWorkspace) {
|
||||||
|
posthog?.group(GROUP_WORKSPACE, currentWorkspace?.id);
|
||||||
}
|
}
|
||||||
}, [user, currentProjectRole, currentWorkspaceRole]);
|
}
|
||||||
|
}, [user, currentProjectRole, currentWorkspaceRole, currentWorkspace]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST) {
|
if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST) {
|
||||||
|
|
@ -47,32 +52,12 @@ const PostHogProvider: FC<IPosthogWrapper> = observer((props) => {
|
||||||
debug: process.env.NEXT_PUBLIC_POSTHOG_DEBUG === "1", // Debug mode based on the environment variable
|
debug: process.env.NEXT_PUBLIC_POSTHOG_DEBUG === "1", // Debug mode based on the environment variable
|
||||||
autocapture: false,
|
autocapture: false,
|
||||||
capture_pageview: false, // Disable automatic pageview capture, as we capture manually
|
capture_pageview: false, // Disable automatic pageview capture, as we capture manually
|
||||||
|
capture_pageleave: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST && is_telemetry_enabled)
|
||||||
// Join workspace group on workspace change
|
|
||||||
if (currentWorkspace?.id && user?.email) {
|
|
||||||
posthog?.identify(user?.email);
|
|
||||||
posthog?.group(GROUP_WORKSPACE, currentWorkspace?.id);
|
|
||||||
}
|
|
||||||
}, [currentWorkspace?.id, user?.email]);
|
|
||||||
|
|
||||||
useEffect(() =>
|
|
||||||
// Track page views
|
|
||||||
// const handleRouteChange = () => {
|
|
||||||
// posthog?.capture("$pageview");
|
|
||||||
// };
|
|
||||||
// router.events.on("routeChangeComplete", handleRouteChange);
|
|
||||||
|
|
||||||
() => {
|
|
||||||
// router.events.off("routeChangeComplete", handleRouteChange);
|
|
||||||
}
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
, []);
|
|
||||||
|
|
||||||
if (process.env.NEXT_PUBLIC_POSTHOG_KEY && process.env.NEXT_PUBLIC_POSTHOG_HOST)
|
|
||||||
return <PHProvider client={posthog}>{children}</PHProvider>;
|
return <PHProvider client={posthog}>{children}</PHProvider>;
|
||||||
|
|
||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue