mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
chore: telemetry update & refactoring
This commit is contained in:
parent
5b2e271f7c
commit
e551dacb7e
@ -25,7 +25,7 @@ import { EUserWorkspaceRoles, ROLE } from "constants/workspace";
|
|||||||
// helpers
|
// helpers
|
||||||
import { getUserRole } from "helpers/user.helper";
|
import { getUserRole } from "helpers/user.helper";
|
||||||
// hooks
|
// hooks
|
||||||
import { useEventTracker } from "hooks/store";
|
import { useApplication, useEventTracker } from "hooks/store";
|
||||||
import useDynamicDropdownPosition from "hooks/use-dynamic-dropdown";
|
import useDynamicDropdownPosition from "hooks/use-dynamic-dropdown";
|
||||||
// assets
|
// assets
|
||||||
import userDark from "public/onboarding/user-dark.svg";
|
import userDark from "public/onboarding/user-dark.svg";
|
||||||
@ -271,6 +271,9 @@ export const InviteMembers: React.FC<Props> = (props) => {
|
|||||||
const { resolvedTheme } = useTheme();
|
const { resolvedTheme } = useTheme();
|
||||||
// store hooks
|
// store hooks
|
||||||
const { captureEvent } = useEventTracker();
|
const { captureEvent } = useEventTracker();
|
||||||
|
const {
|
||||||
|
instance: { instance },
|
||||||
|
} = useApplication();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
control,
|
control,
|
||||||
@ -310,12 +313,14 @@ export const InviteMembers: React.FC<Props> = (props) => {
|
|||||||
})
|
})
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
captureEvent(MEMBER_INVITED, {
|
captureEvent(MEMBER_INVITED, {
|
||||||
emails: [
|
emails: !instance?.is_telemetry_anonymous
|
||||||
...payload.emails.map((email) => ({
|
? [
|
||||||
email: email.email,
|
...payload.emails.map((email) => ({
|
||||||
role: getUserRole(email.role),
|
email: email.email,
|
||||||
})),
|
role: getUserRole(email.role),
|
||||||
],
|
})),
|
||||||
|
]
|
||||||
|
: undefined,
|
||||||
project_id: undefined,
|
project_id: undefined,
|
||||||
state: "SUCCESS",
|
state: "SUCCESS",
|
||||||
element: "Onboarding",
|
element: "Onboarding",
|
||||||
|
@ -69,7 +69,7 @@ export const ProjectMemberListItem: React.FC<Props> = observer((props) => {
|
|||||||
captureEvent(PROJECT_MEMBER_REMOVED, {
|
captureEvent(PROJECT_MEMBER_REMOVED, {
|
||||||
member_id: userDetails.member.id,
|
member_id: userDetails.member.id,
|
||||||
role: getUserRole(userDetails.role as number),
|
role: getUserRole(userDetails.role as number),
|
||||||
removed_by_role: getUserRole(currentProjectRole as number),
|
removed_by_role: currentProjectRole ? getUserRole(currentProjectRole as number) : undefined,
|
||||||
state: "SUCCESS",
|
state: "SUCCESS",
|
||||||
element: "Project settings members page",
|
element: "Project settings members page",
|
||||||
});
|
});
|
||||||
|
@ -26,24 +26,17 @@ const PostHogProvider: FC<IPosthogWrapper> = (props) => {
|
|||||||
// router
|
// router
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
if (!isCloud && !telemetryEnabled) return <>{children}</>;
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
// Identify sends an event, so you want may want to limit how often you call it
|
// Identify sends an event, so you want may want to limit how often you call it
|
||||||
posthog?.identify(
|
posthog?.identify(isCloud ? user.email : user.id, {
|
||||||
isCloud ? user.email : user.id,
|
id: user.id,
|
||||||
isCloud
|
first_name: isCloud ? user.first_name : undefined,
|
||||||
? {
|
last_name: isCloud ? user.last_name : undefined,
|
||||||
id: user.id,
|
email: isCloud ? user.email : undefined,
|
||||||
first_name: user.first_name,
|
use_case: user.use_case,
|
||||||
last_name: user.last_name,
|
workspaces: workspaceIds,
|
||||||
email: user.email,
|
});
|
||||||
use_case: user.use_case,
|
|
||||||
workspaces: workspaceIds,
|
|
||||||
}
|
|
||||||
: undefined
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}, [user, workspaceIds, isCloud]);
|
}, [user, workspaceIds, isCloud]);
|
||||||
|
|
||||||
@ -55,6 +48,7 @@ const PostHogProvider: FC<IPosthogWrapper> = (props) => {
|
|||||||
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
|
||||||
});
|
});
|
||||||
|
posthog?.opt_in_capturing();
|
||||||
}
|
}
|
||||||
}, [posthogAPIKey, posthogHost, isCloud, telemetryEnabled]);
|
}, [posthogAPIKey, posthogHost, isCloud, telemetryEnabled]);
|
||||||
|
|
||||||
@ -80,6 +74,11 @@ const PostHogProvider: FC<IPosthogWrapper> = (props) => {
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
if (!isCloud && !telemetryEnabled) {
|
||||||
|
posthog?.opt_out_capturing();
|
||||||
|
return <>{children}</>;
|
||||||
|
}
|
||||||
|
|
||||||
if (posthogAPIKey) {
|
if (posthogAPIKey) {
|
||||||
return <PHProvider client={posthog}>{children}</PHProvider>;
|
return <PHProvider client={posthog}>{children}</PHProvider>;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import { SendWorkspaceInvitationModal, WorkspaceMembersList } from "components/w
|
|||||||
import { MEMBER_INVITED } from "constants/event-tracker";
|
import { MEMBER_INVITED } from "constants/event-tracker";
|
||||||
import { EUserWorkspaceRoles } from "constants/workspace";
|
import { EUserWorkspaceRoles } from "constants/workspace";
|
||||||
import { getUserRole } from "helpers/user.helper";
|
import { getUserRole } from "helpers/user.helper";
|
||||||
import { useEventTracker, useMember, useUser, useWorkspace } from "hooks/store";
|
import { useApplication, useEventTracker, useMember, useUser, useWorkspace } from "hooks/store";
|
||||||
// layouts
|
// layouts
|
||||||
import { AppLayout } from "layouts/app-layout";
|
import { AppLayout } from "layouts/app-layout";
|
||||||
import { WorkspaceSettingLayout } from "layouts/settings-layout";
|
import { WorkspaceSettingLayout } from "layouts/settings-layout";
|
||||||
@ -31,6 +31,9 @@ const WorkspaceMembersSettingsPage: NextPageWithLayout = observer(() => {
|
|||||||
const { workspaceSlug } = router.query;
|
const { workspaceSlug } = router.query;
|
||||||
// store hooks
|
// store hooks
|
||||||
const { captureEvent } = useEventTracker();
|
const { captureEvent } = useEventTracker();
|
||||||
|
const {
|
||||||
|
instance: { instance },
|
||||||
|
} = useApplication();
|
||||||
const {
|
const {
|
||||||
membership: { currentWorkspaceRole },
|
membership: { currentWorkspaceRole },
|
||||||
} = useUser();
|
} = useUser();
|
||||||
@ -42,16 +45,18 @@ const WorkspaceMembersSettingsPage: NextPageWithLayout = observer(() => {
|
|||||||
const handleWorkspaceInvite = (data: IWorkspaceBulkInviteFormData) => {
|
const handleWorkspaceInvite = (data: IWorkspaceBulkInviteFormData) => {
|
||||||
if (!workspaceSlug) return;
|
if (!workspaceSlug) return;
|
||||||
|
|
||||||
|
const emailsEventPayload = [
|
||||||
|
...data.emails.map((email) => ({
|
||||||
|
email: email.email,
|
||||||
|
role: getUserRole(email.role),
|
||||||
|
})),
|
||||||
|
];
|
||||||
return inviteMembersToWorkspace(workspaceSlug.toString(), data)
|
return inviteMembersToWorkspace(workspaceSlug.toString(), data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setInviteModal(false);
|
setInviteModal(false);
|
||||||
|
|
||||||
captureEvent(MEMBER_INVITED, {
|
captureEvent(MEMBER_INVITED, {
|
||||||
emails: [
|
emails: !instance?.is_telemetry_anonymous ? emailsEventPayload : undefined,
|
||||||
...data.emails.map((email) => ({
|
|
||||||
email: email.email,
|
|
||||||
role: getUserRole(email.role),
|
|
||||||
})),
|
|
||||||
],
|
|
||||||
project_id: undefined,
|
project_id: undefined,
|
||||||
state: "SUCCESS",
|
state: "SUCCESS",
|
||||||
element: "Workspace settings member page",
|
element: "Workspace settings member page",
|
||||||
@ -64,12 +69,7 @@ const WorkspaceMembersSettingsPage: NextPageWithLayout = observer(() => {
|
|||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
captureEvent(MEMBER_INVITED, {
|
captureEvent(MEMBER_INVITED, {
|
||||||
emails: [
|
emails: !instance?.is_telemetry_anonymous ? emailsEventPayload : undefined,
|
||||||
...data.emails.map((email) => ({
|
|
||||||
email: email.email,
|
|
||||||
role: getUserRole(email.role),
|
|
||||||
})),
|
|
||||||
],
|
|
||||||
project_id: undefined,
|
project_id: undefined,
|
||||||
state: "FAILED",
|
state: "FAILED",
|
||||||
element: "Workspace settings member page",
|
element: "Workspace settings member page",
|
||||||
|
@ -85,8 +85,7 @@ const UserInvitationsPage: NextPageWithLayout = observer(() => {
|
|||||||
joinWorkspaceMetricGroup(redirectWorkspace?.id);
|
joinWorkspaceMetricGroup(redirectWorkspace?.id);
|
||||||
captureEvent(MEMBER_ACCEPTED, {
|
captureEvent(MEMBER_ACCEPTED, {
|
||||||
member_id: invitation?.id,
|
member_id: invitation?.id,
|
||||||
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
role: invitation?.role ? getUserRole(invitation?.role) : undefined,
|
||||||
role: getUserRole(invitation?.role!),
|
|
||||||
project_id: undefined,
|
project_id: undefined,
|
||||||
accepted_from: "App",
|
accepted_from: "App",
|
||||||
state: "SUCCESS",
|
state: "SUCCESS",
|
||||||
|
@ -101,7 +101,9 @@ export class EventTrackerStore implements IEventTrackerStore {
|
|||||||
return {
|
return {
|
||||||
workspace_id: currentWorkspaceDetails?.id,
|
workspace_id: currentWorkspaceDetails?.id,
|
||||||
project_id: currentProjectDetails?.id,
|
project_id: currentProjectDetails?.id,
|
||||||
user_project_role: getUserRole(currentProjectDetails?.member_role as number),
|
user_project_role: currentProjectDetails?.member_role
|
||||||
|
? getUserRole(currentProjectDetails?.member_role as number)
|
||||||
|
: undefined,
|
||||||
user_workspace_role: getUserRole(currentWorkspaceRole as number),
|
user_workspace_role: getUserRole(currentWorkspaceRole as number),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user