From 23c6359432e54ae1aa484d4baa3e048caab00e9e Mon Sep 17 00:00:00 2001 From: LAKHAN BAHETI Date: Wed, 31 Jan 2024 18:47:01 +0530 Subject: [PATCH 1/8] chore: events naming convention changed --- web/components/cycles/delete-modal.tsx | 4 ++-- web/components/cycles/modal.tsx | 4 ++-- web/components/inbox/inbox-issue-actions.tsx | 4 ++-- .../inbox/modals/create-issue-modal.tsx | 4 ++-- web/components/issues/issue-modal/modal.tsx | 8 +++---- .../modules/delete-module-modal.tsx | 4 ++-- web/components/modules/modal.tsx | 8 +++---- web/components/onboarding/invitations.tsx | 4 ++-- .../page-views/workspace-dashboard.tsx | 2 +- .../project/create-project-modal.tsx | 4 ++-- .../project/delete-project-modal.tsx | 4 ++-- web/components/project/form.tsx | 4 ++-- .../project/leave-project-modal.tsx | 4 ++-- .../project/send-project-invitation-modal.tsx | 4 ++-- .../project/settings/features-list.tsx | 2 +- .../states/create-update-state-inline.tsx | 8 +++---- web/components/states/delete-state-modal.tsx | 4 ++-- .../workspace/create-workspace-form.tsx | 6 ++--- .../workspace/delete-workspace-modal.tsx | 4 ++-- .../workspace/settings/workspace-details.tsx | 4 ++-- web/lib/app-provider.tsx | 6 ++--- .../[workspaceSlug]/settings/members.tsx | 4 ++-- web/pages/invitations/index.tsx | 2 +- web/pages/onboarding/index.tsx | 2 +- web/store/application/event-tracker.store.ts | 22 ++++++++----------- 25 files changed, 61 insertions(+), 65 deletions(-) diff --git a/web/components/cycles/delete-modal.tsx b/web/components/cycles/delete-modal.tsx index 44da175b49a..cc54c290843 100644 --- a/web/components/cycles/delete-modal.tsx +++ b/web/components/cycles/delete-modal.tsx @@ -46,12 +46,12 @@ export const CycleDeleteModal: React.FC = observer((props) => { title: "Success!", message: "Cycle deleted successfully.", }); - postHogEventTracker("CYCLE_DELETE", { + postHogEventTracker("Cycle delete", { state: "SUCCESS", }); }) .catch(() => { - postHogEventTracker("CYCLE_DELETE", { + postHogEventTracker("Cycle delete", { state: "FAILED", }); }); diff --git a/web/components/cycles/modal.tsx b/web/components/cycles/modal.tsx index 8144feef7e0..1c873a7bc43 100644 --- a/web/components/cycles/modal.tsx +++ b/web/components/cycles/modal.tsx @@ -48,7 +48,7 @@ export const CycleCreateUpdateModal: React.FC = (props) => { title: "Success!", message: "Cycle created successfully.", }); - postHogEventTracker("CYCLE_CREATE", { + postHogEventTracker("Cycle create", { ...res, state: "SUCCESS", }); @@ -59,7 +59,7 @@ export const CycleCreateUpdateModal: React.FC = (props) => { title: "Error!", message: err.detail ?? "Error in creating cycle. Please try again.", }); - postHogEventTracker("CYCLE_CREATE", { + postHogEventTracker("Cycle create", { state: "FAILED", }); }); diff --git a/web/components/inbox/inbox-issue-actions.tsx b/web/components/inbox/inbox-issue-actions.tsx index 0ca28b9506f..53f7d754eef 100644 --- a/web/components/inbox/inbox-issue-actions.tsx +++ b/web/components/inbox/inbox-issue-actions.tsx @@ -88,7 +88,7 @@ export const InboxIssueActionsHeader: FC = observer((p throw new Error("Missing required parameters"); await removeInboxIssue(workspaceSlug, projectId, inboxId, inboxIssueId); postHogEventTracker( - "ISSUE_DELETED", + "Issue deleted", { state: "SUCCESS", }, @@ -108,7 +108,7 @@ export const InboxIssueActionsHeader: FC = observer((p message: "Something went wrong while deleting inbox issue. Please try again.", }); postHogEventTracker( - "ISSUE_DELETED", + "Issue deleted", { state: "FAILED", }, diff --git a/web/components/inbox/modals/create-issue-modal.tsx b/web/components/inbox/modals/create-issue-modal.tsx index e152c1b031a..3550045f38f 100644 --- a/web/components/inbox/modals/create-issue-modal.tsx +++ b/web/components/inbox/modals/create-issue-modal.tsx @@ -94,7 +94,7 @@ export const CreateInboxIssueModal: React.FC = observer((props) => { handleClose(); } else reset(defaultValues); postHogEventTracker( - "ISSUE_CREATED", + "Issue created", { ...res, state: "SUCCESS", @@ -109,7 +109,7 @@ export const CreateInboxIssueModal: React.FC = observer((props) => { .catch((error) => { console.error(error); postHogEventTracker( - "ISSUE_CREATED", + "Issue created", { state: "FAILED", }, diff --git a/web/components/issues/issue-modal/modal.tsx b/web/components/issues/issue-modal/modal.tsx index da13e635378..804b73fa249 100644 --- a/web/components/issues/issue-modal/modal.tsx +++ b/web/components/issues/issue-modal/modal.tsx @@ -148,7 +148,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop message: "Issue created successfully.", }); postHogEventTracker( - "ISSUE_CREATED", + "Issue created", { ...response, state: "SUCCESS", @@ -168,7 +168,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop message: "Issue could not be created. Please try again.", }); postHogEventTracker( - "ISSUE_CREATED", + "Issue created", { state: "FAILED", }, @@ -192,7 +192,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop message: "Issue updated successfully.", }); postHogEventTracker( - "ISSUE_UPDATED", + "Issue updated", { ...response, state: "SUCCESS", @@ -212,7 +212,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop message: "Issue could not be created. Please try again.", }); postHogEventTracker( - "ISSUE_UPDATED", + "Issue updated", { state: "FAILED", }, diff --git a/web/components/modules/delete-module-modal.tsx b/web/components/modules/delete-module-modal.tsx index e86a8efd92e..12d49e8ac8c 100644 --- a/web/components/modules/delete-module-modal.tsx +++ b/web/components/modules/delete-module-modal.tsx @@ -52,7 +52,7 @@ export const DeleteModuleModal: React.FC = observer((props) => { title: "Success!", message: "Module deleted successfully.", }); - postHogEventTracker("MODULE_DELETED", { + postHogEventTracker("Module deleted", { state: "SUCCESS", }); }) @@ -62,7 +62,7 @@ export const DeleteModuleModal: React.FC = observer((props) => { title: "Error!", message: "Module could not be deleted. Please try again.", }); - postHogEventTracker("MODULE_DELETED", { + postHogEventTracker("Module deleted", { state: "FAILED", }); }) diff --git a/web/components/modules/modal.tsx b/web/components/modules/modal.tsx index e2ed02aa61c..b84b0357a39 100644 --- a/web/components/modules/modal.tsx +++ b/web/components/modules/modal.tsx @@ -61,7 +61,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { title: "Success!", message: "Module created successfully.", }); - postHogEventTracker("MODULE_CREATED", { + postHogEventTracker("Module created", { ...res, state: "SUCCESS", }); @@ -72,7 +72,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { title: "Error!", message: err.detail ?? "Module could not be created. Please try again.", }); - postHogEventTracker("MODULE_CREATED", { + postHogEventTracker("Module created", { state: "FAILED", }); }); @@ -91,7 +91,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { title: "Success!", message: "Module updated successfully.", }); - postHogEventTracker("MODULE_UPDATED", { + postHogEventTracker("Module updated", { ...res, state: "SUCCESS", }); @@ -102,7 +102,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { title: "Error!", message: err.detail ?? "Module could not be updated. Please try again.", }); - postHogEventTracker("MODULE_UPDATED", { + postHogEventTracker("Module updated", { state: "FAILED", }); }); diff --git a/web/components/onboarding/invitations.tsx b/web/components/onboarding/invitations.tsx index c9ec19cc8a0..3fd76dc4b99 100644 --- a/web/components/onboarding/invitations.tsx +++ b/web/components/onboarding/invitations.tsx @@ -63,7 +63,7 @@ export const Invitations: React.FC = (props) => { await workspaceService .joinWorkspaces({ invitations: invitationsRespond }) .then(async (res) => { - postHogEventTracker("MEMBER_ACCEPTED", { ...res, state: "SUCCESS", accepted_from: "App" }); + postHogEventTracker("Member accepted", { ...res, state: "SUCCESS", accepted_from: "App" }); await fetchWorkspaces(); await mutate(USER_WORKSPACES); await updateLastWorkspace(); @@ -72,7 +72,7 @@ export const Invitations: React.FC = (props) => { }) .catch((error) => { console.error(error); - postHogEventTracker("MEMBER_ACCEPTED", { state: "FAILED", accepted_from: "App" }); + postHogEventTracker("Member accepted", { state: "FAILED", accepted_from: "App" }); }) .finally(() => setIsJoiningWorkspaces(false)); }; diff --git a/web/components/page-views/workspace-dashboard.tsx b/web/components/page-views/workspace-dashboard.tsx index 3ae0b9e62a0..5c69efdddce 100644 --- a/web/components/page-views/workspace-dashboard.tsx +++ b/web/components/page-views/workspace-dashboard.tsx @@ -37,7 +37,7 @@ export const WorkspaceDashboardView = observer(() => { const handleTourCompleted = () => { updateTourCompleted() .then(() => { - postHogEventTracker("USER_TOUR_COMPLETE", { + postHogEventTracker("User tour complete", { user_id: currentUser?.id, email: currentUser?.email, state: "SUCCESS", diff --git a/web/components/project/create-project-modal.tsx b/web/components/project/create-project-modal.tsx index 1e6aa136abd..5bb3833c7ba 100644 --- a/web/components/project/create-project-modal.tsx +++ b/web/components/project/create-project-modal.tsx @@ -135,7 +135,7 @@ export const CreateProjectModal: FC = observer((props) => { ...res, state: "SUCCESS", }; - postHogEventTracker("PROJECT_CREATED", newPayload, { + postHogEventTracker("Project created", newPayload, { isGrouping: true, groupType: "Workspace_metrics", groupId: res.workspace, @@ -158,7 +158,7 @@ export const CreateProjectModal: FC = observer((props) => { message: err.data[key], }); postHogEventTracker( - "PROJECT_CREATED", + "Project created", { state: "FAILED", }, diff --git a/web/components/project/delete-project-modal.tsx b/web/components/project/delete-project-modal.tsx index e2b0bc5f0d8..4897bd1f3d3 100644 --- a/web/components/project/delete-project-modal.tsx +++ b/web/components/project/delete-project-modal.tsx @@ -64,7 +64,7 @@ export const DeleteProjectModal: React.FC = (props) => { handleClose(); postHogEventTracker( - "PROJECT_DELETED", + "Project deleted", { state: "SUCCESS", }, @@ -82,7 +82,7 @@ export const DeleteProjectModal: React.FC = (props) => { }) .catch(() => { postHogEventTracker( - "PROJECT_DELETED", + "Project deleted", { state: "FAILED", }, diff --git a/web/components/project/form.tsx b/web/components/project/form.tsx index 3badbb8bf85..1709f81db16 100644 --- a/web/components/project/form.tsx +++ b/web/components/project/form.tsx @@ -78,7 +78,7 @@ export const ProjectDetailsForm: FC = (props) => { return updateProject(workspaceSlug.toString(), project.id, payload) .then((res) => { postHogEventTracker( - "PROJECT_UPDATED", + "Project updated", { ...res, state: "SUCCESS" }, { isGrouping: true, @@ -94,7 +94,7 @@ export const ProjectDetailsForm: FC = (props) => { }) .catch((error) => { postHogEventTracker( - "PROJECT_UPDATED", + "Project updated", { state: "FAILED", }, diff --git a/web/components/project/leave-project-modal.tsx b/web/components/project/leave-project-modal.tsx index 96fc8df595c..5f228fefd39 100644 --- a/web/components/project/leave-project-modal.tsx +++ b/web/components/project/leave-project-modal.tsx @@ -65,7 +65,7 @@ export const LeaveProjectModal: FC = observer((props) => { .then(() => { handleClose(); router.push(`/${workspaceSlug}/projects`); - postHogEventTracker("PROJECT_MEMBER_LEAVE", { + postHogEventTracker("Project member leave", { state: "SUCCESS", }); }) @@ -75,7 +75,7 @@ export const LeaveProjectModal: FC = observer((props) => { title: "Error!", message: "Something went wrong please try again later.", }); - postHogEventTracker("PROJECT_MEMBER_LEAVE", { + postHogEventTracker("Project member leave", { state: "FAILED", }); }); diff --git a/web/components/project/send-project-invitation-modal.tsx b/web/components/project/send-project-invitation-modal.tsx index b165a40ae41..85199e7addd 100644 --- a/web/components/project/send-project-invitation-modal.tsx +++ b/web/components/project/send-project-invitation-modal.tsx @@ -90,7 +90,7 @@ export const SendProjectInvitationModal: React.FC = observer((props) => { message: "Members added successfully.", }); postHogEventTracker( - "MEMBER_ADDED", + "Member added", { ...res, state: "SUCCESS", @@ -105,7 +105,7 @@ export const SendProjectInvitationModal: React.FC = observer((props) => { .catch((error) => { console.error(error); postHogEventTracker( - "MEMBER_ADDED", + "Member added", { state: "FAILED", }, diff --git a/web/components/project/settings/features-list.tsx b/web/components/project/settings/features-list.tsx index ed45792f24c..14f0a33b728 100644 --- a/web/components/project/settings/features-list.tsx +++ b/web/components/project/settings/features-list.tsx @@ -94,7 +94,7 @@ export const ProjectFeaturesList: FC = observer(() => { value={Boolean(currentProjectDetails?.[feature.property as keyof IProject])} onChange={() => { setTrackElement("PROJECT_SETTINGS_FEATURES_PAGE"); - postHogEventTracker(`TOGGLE_${feature.title.toUpperCase()}`, { + postHogEventTracker(`Toggle ${feature.title.toLowerCase()}`, { workspace_id: currentWorkspace?.id, workspace_slug: currentWorkspace?.slug, project_id: currentProjectDetails?.id, diff --git a/web/components/states/create-update-state-inline.tsx b/web/components/states/create-update-state-inline.tsx index 860444b6bcc..580ccc80824 100644 --- a/web/components/states/create-update-state-inline.tsx +++ b/web/components/states/create-update-state-inline.tsx @@ -88,7 +88,7 @@ export const CreateUpdateStateInline: React.FC = observer((props) => { title: "Success!", message: "State created successfully.", }); - postHogEventTracker("STATE_CREATE", { + postHogEventTracker("State create", { ...res, state: "SUCCESS", }); @@ -106,7 +106,7 @@ export const CreateUpdateStateInline: React.FC = observer((props) => { title: "Error!", message: "State could not be created. Please try again.", }); - postHogEventTracker("STATE_CREATE", { + postHogEventTracker("State create", { state: "FAILED", }); }); @@ -118,7 +118,7 @@ export const CreateUpdateStateInline: React.FC = observer((props) => { await updateState(workspaceSlug.toString(), projectId.toString(), data.id, formData) .then((res) => { handleClose(); - postHogEventTracker("STATE_UPDATE", { + postHogEventTracker("State update", { ...res, state: "SUCCESS", }); @@ -141,7 +141,7 @@ export const CreateUpdateStateInline: React.FC = observer((props) => { title: "Error!", message: "State could not be updated. Please try again.", }); - postHogEventTracker("STATE_UPDATE", { + postHogEventTracker("State update", { state: "FAILED", }); }); diff --git a/web/components/states/delete-state-modal.tsx b/web/components/states/delete-state-modal.tsx index 26b542b71c4..34888d7ce04 100644 --- a/web/components/states/delete-state-modal.tsx +++ b/web/components/states/delete-state-modal.tsx @@ -44,7 +44,7 @@ export const DeleteStateModal: React.FC = observer((props) => { await deleteState(workspaceSlug.toString(), data.project_id, data.id) .then(() => { - postHogEventTracker("STATE_DELETE", { + postHogEventTracker("State delete", { state: "SUCCESS", }); handleClose(); @@ -63,7 +63,7 @@ export const DeleteStateModal: React.FC = observer((props) => { title: "Error!", message: "State could not be deleted. Please try again.", }); - postHogEventTracker("STATE_DELETE", { + postHogEventTracker("State delete", { state: "FAILED", }); }) diff --git a/web/components/workspace/create-workspace-form.tsx b/web/components/workspace/create-workspace-form.tsx index 423c80640a7..52359ba3679 100644 --- a/web/components/workspace/create-workspace-form.tsx +++ b/web/components/workspace/create-workspace-form.tsx @@ -72,7 +72,7 @@ export const CreateWorkspaceForm: FC = observer((props) => { await createWorkspace(formData) .then(async (res) => { - postHogEventTracker("WORKSPACE_CREATED", { + postHogEventTracker("Workspace created", { ...res, state: "SUCCESS", }); @@ -90,7 +90,7 @@ export const CreateWorkspaceForm: FC = observer((props) => { title: "Error!", message: "Workspace could not be created. Please try again.", }); - postHogEventTracker("WORKSPACE_CREATED", { + postHogEventTracker("Workspace created", { state: "FAILED", }); }); @@ -102,7 +102,7 @@ export const CreateWorkspaceForm: FC = observer((props) => { title: "Error!", message: "Some error occurred while creating workspace. Please try again.", }); - postHogEventTracker("WORKSPACE_CREATED", { + postHogEventTracker("Workspace created", { state: "FAILED", }); }); diff --git a/web/components/workspace/delete-workspace-modal.tsx b/web/components/workspace/delete-workspace-modal.tsx index a35041a2af7..7345f273cdd 100644 --- a/web/components/workspace/delete-workspace-modal.tsx +++ b/web/components/workspace/delete-workspace-modal.tsx @@ -61,7 +61,7 @@ export const DeleteWorkspaceModal: React.FC = observer((props) => { .then((res) => { handleClose(); router.push("/"); - postHogEventTracker("WORKSPACE_DELETED", { + postHogEventTracker("Workspace deleted", { res, state: "SUCCESS", }); @@ -77,7 +77,7 @@ export const DeleteWorkspaceModal: React.FC = observer((props) => { title: "Error!", message: "Something went wrong. Please try again later.", }); - postHogEventTracker("WORKSPACE_DELETED", { + postHogEventTracker("Workspace deleted", { state: "FAILED", }); }); diff --git a/web/components/workspace/settings/workspace-details.tsx b/web/components/workspace/settings/workspace-details.tsx index 3063855fd48..b83fd7f1b89 100644 --- a/web/components/workspace/settings/workspace-details.tsx +++ b/web/components/workspace/settings/workspace-details.tsx @@ -67,7 +67,7 @@ export const WorkspaceDetails: FC = observer(() => { await updateWorkspace(currentWorkspace.slug, payload) .then((res) => { - postHogEventTracker("WORKSPACE_UPDATED", { + postHogEventTracker("Workspace updated", { ...res, state: "SUCCESS", }); @@ -78,7 +78,7 @@ export const WorkspaceDetails: FC = observer(() => { }); }) .catch((err) => { - postHogEventTracker("WORKSPACE_UPDATED", { + postHogEventTracker("Workspace updated", { state: "FAILED", }); console.error(err); diff --git a/web/lib/app-provider.tsx b/web/lib/app-provider.tsx index 027800cd852..bef2d810aee 100644 --- a/web/lib/app-provider.tsx +++ b/web/lib/app-provider.tsx @@ -47,7 +47,7 @@ export const AppProvider: FC = observer((props) => { - {/* = observer((props) => { posthogHost={envConfig?.posthog_host || null} > {children} - */} - {children} + + {/* {children} */} diff --git a/web/pages/[workspaceSlug]/settings/members.tsx b/web/pages/[workspaceSlug]/settings/members.tsx index cabc2aa927f..3e25ea70a6d 100644 --- a/web/pages/[workspaceSlug]/settings/members.tsx +++ b/web/pages/[workspaceSlug]/settings/members.tsx @@ -45,7 +45,7 @@ const WorkspaceMembersSettingsPage: NextPageWithLayout = observer(() => { return inviteMembersToWorkspace(workspaceSlug.toString(), data) .then(() => { setInviteModal(false); - postHogEventTracker("MEMBER_INVITED", { state: "SUCCESS" }); + postHogEventTracker("Member invited", { state: "SUCCESS" }); setToastAlert({ type: "success", title: "Success!", @@ -53,7 +53,7 @@ const WorkspaceMembersSettingsPage: NextPageWithLayout = observer(() => { }); }) .catch((err) => { - postHogEventTracker("MEMBER_INVITED", { state: "FAILED" }); + postHogEventTracker("Member invited", { state: "FAILED" }); setToastAlert({ type: "error", title: "Error!", diff --git a/web/pages/invitations/index.tsx b/web/pages/invitations/index.tsx index 0d2a1860b19..94133b4a1af 100644 --- a/web/pages/invitations/index.tsx +++ b/web/pages/invitations/index.tsx @@ -84,7 +84,7 @@ const UserInvitationsPage: NextPageWithLayout = observer(() => { mutate("USER_WORKSPACES"); const firstInviteId = invitationsRespond[0]; const redirectWorkspace = invitations?.find((i) => i.id === firstInviteId)?.workspace; - postHogEventTracker("MEMBER_ACCEPTED", { + postHogEventTracker("Member accepted", { ...res, state: "SUCCESS", accepted_from: "App", diff --git a/web/pages/onboarding/index.tsx b/web/pages/onboarding/index.tsx index 53d4a3b3bf3..2643e4621ed 100644 --- a/web/pages/onboarding/index.tsx +++ b/web/pages/onboarding/index.tsx @@ -81,7 +81,7 @@ const OnboardingPage: NextPageWithLayout = observer(() => { await updateUserOnBoard() .then(() => { - postHogEventTracker("USER_ONBOARDING_COMPLETE", { + postHogEventTracker("User onboarding complete", { user_role: user.role, email: user.email, user_id: user.id, diff --git a/web/store/application/event-tracker.store.ts b/web/store/application/event-tracker.store.ts index cc0ac22b28d..db1c5de6ee8 100644 --- a/web/store/application/event-tracker.store.ts +++ b/web/store/application/event-tracker.store.ts @@ -35,7 +35,7 @@ export class EventTrackerStore implements IEventTrackerStore { group?: { isGrouping: boolean | null; groupType: string | null; groupId: string | null } | null ) => { try { - const currentWorkspaceDetails = this.rootStore.workspaceRoot.workspaces.currentWorkspace; + const currentWorkspaceDetails = this.rootStore.workspaceRoot.currentWorkspace; const currentProjectDetails = this.rootStore.projectRoot.project.currentProjectDetails; let extras: any = { workspace_name: currentWorkspaceDetails?.name ?? "", @@ -45,7 +45,8 @@ export class EventTrackerStore implements IEventTrackerStore { project_id: currentProjectDetails?.id ?? "", project_identifier: currentProjectDetails?.identifier ?? "", }; - if (["PROJECT_CREATED", "PROJECT_UPDATED"].includes(eventName)) { + if (["Project created", "Project updated"].includes(eventName)) { + const project_details: any = payload as object; extras = { ...extras, @@ -53,24 +54,19 @@ export class EventTrackerStore implements IEventTrackerStore { project_id: project_details?.id ?? "", project_identifier: project_details?.identifier ?? "", }; + console.log("Project created",extras); } if (group && group!.isGrouping === true) { posthog?.group(group!.groupType!, group!.groupId!, { date: new Date(), workspace_id: group!.groupId, }); - posthog?.capture(eventName, { - ...payload, - extras: extras, - element: this.trackElement ?? "", - }); - } else { - posthog?.capture(eventName, { - ...payload, - extras: extras, - element: this.trackElement ?? "", - }); } + posthog?.capture(eventName, { + ...payload, + extras: extras, + element: this.trackElement ?? "", + }); } catch (error) { throw error; } From c80d88de828853d03ed3aa9c777aea1c25d6292e Mon Sep 17 00:00:00 2001 From: LAKHAN BAHETI Date: Thu, 1 Feb 2024 17:51:22 +0530 Subject: [PATCH 2/8] chore: track element added for project related events --- .../command-palette/command-modal.tsx | 4 +- .../command-palette/command-palette.tsx | 4 +- web/components/cycles/delete-modal.tsx | 12 +- web/components/cycles/modal.tsx | 13 +- .../dashboard/project-empty-state.tsx | 9 +- .../dashboard/widgets/recent-projects.tsx | 2 + web/components/headers/projects.tsx | 2 +- .../integration/jira/give-details.tsx | 2 +- .../empty-states/global-view.tsx | 4 +- .../roots/all-issue-layout-root.tsx | 13 +- .../modules/delete-module-modal.tsx | 12 +- web/components/modules/modal.tsx | 24 ++-- web/components/onboarding/tour/root.tsx | 2 +- .../page-views/workspace-dashboard.tsx | 6 +- web/components/project/card-list.tsx | 2 +- .../project/create-project-modal.tsx | 27 ++-- .../project/delete-project-modal.tsx | 30 ++-- web/components/project/form.tsx | 30 ++-- web/components/project/sidebar-list.tsx | 3 +- web/layouts/auth-layout/project-wrapper.tsx | 6 +- web/pages/[workspaceSlug]/analytics.tsx | 2 +- web/store/application/event-tracker.store.ts | 136 +++++++++++++----- 22 files changed, 220 insertions(+), 125 deletions(-) diff --git a/web/components/command-palette/command-modal.tsx b/web/components/command-palette/command-modal.tsx index 34282782536..95a258b4dcb 100644 --- a/web/components/command-palette/command-modal.tsx +++ b/web/components/command-palette/command-modal.tsx @@ -278,7 +278,7 @@ export const CommandModal: React.FC = observer(() => { { closePalette(); - setTrackElement("COMMAND_PALETTE"); + setTrackElement("Command Palette"); toggleCreateIssueModal(true); }} className="focus:bg-custom-background-80" @@ -296,7 +296,7 @@ export const CommandModal: React.FC = observer(() => { { closePalette(); - setTrackElement("COMMAND_PALETTE"); + setTrackElement("Command palette"); toggleCreateProjectModal(true); }} className="focus:outline-none" diff --git a/web/components/command-palette/command-palette.tsx b/web/components/command-palette/command-palette.tsx index 213c35f8ee9..3943460fdd5 100644 --- a/web/components/command-palette/command-palette.tsx +++ b/web/components/command-palette/command-palette.tsx @@ -119,10 +119,10 @@ export const CommandPalette: FC = observer(() => { } } else if (!isAnyModalOpen) { if (keyPressed === "c") { - setTrackElement("SHORTCUT_KEY"); + setTrackElement("Shortcut key"); toggleCreateIssueModal(true); } else if (keyPressed === "p") { - setTrackElement("SHORTCUT_KEY"); + setTrackElement("Shortcut key"); toggleCreateProjectModal(true); } else if (keyPressed === "h") { toggleShortcutModal(true); diff --git a/web/components/cycles/delete-modal.tsx b/web/components/cycles/delete-modal.tsx index cc54c290843..fb87a46228d 100644 --- a/web/components/cycles/delete-modal.tsx +++ b/web/components/cycles/delete-modal.tsx @@ -28,7 +28,7 @@ export const CycleDeleteModal: React.FC = observer((props) => { const { cycleId, peekCycle } = router.query; // store hooks const { - eventTracker: { postHogEventTracker }, + eventTracker: { captureCycleEvent }, } = useApplication(); const { deleteCycle } = useCycle(); // toast alert @@ -46,13 +46,15 @@ export const CycleDeleteModal: React.FC = observer((props) => { title: "Success!", message: "Cycle deleted successfully.", }); - postHogEventTracker("Cycle delete", { - state: "SUCCESS", + captureCycleEvent({ + eventName: "Cycle deleted", + payload: { ...cycle, state: "SUCCESS" }, }); }) .catch(() => { - postHogEventTracker("Cycle delete", { - state: "FAILED", + captureCycleEvent({ + eventName: "Cycle deleted", + payload: { ...cycle, state: "FAILED" }, }); }); diff --git a/web/components/cycles/modal.tsx b/web/components/cycles/modal.tsx index 1c873a7bc43..ad855604ca9 100644 --- a/web/components/cycles/modal.tsx +++ b/web/components/cycles/modal.tsx @@ -28,7 +28,7 @@ export const CycleCreateUpdateModal: React.FC = (props) => { const [activeProject, setActiveProject] = useState(null); // store hooks const { - eventTracker: { postHogEventTracker }, + eventTracker: { captureCycleEvent }, } = useApplication(); const { workspaceProjectIds } = useProject(); const { createCycle, updateCycleDetails } = useCycle(); @@ -48,9 +48,9 @@ export const CycleCreateUpdateModal: React.FC = (props) => { title: "Success!", message: "Cycle created successfully.", }); - postHogEventTracker("Cycle create", { - ...res, - state: "SUCCESS", + captureCycleEvent({ + eventName: "Cycle created", + payload: { ...res, state: "SUCCESS" }, }); }) .catch((err) => { @@ -59,8 +59,9 @@ export const CycleCreateUpdateModal: React.FC = (props) => { title: "Error!", message: err.detail ?? "Error in creating cycle. Please try again.", }); - postHogEventTracker("Cycle create", { - state: "FAILED", + captureCycleEvent({ + eventName: "Cycle created", + payload: { ...payload, state: "FAILED" }, }); }); }; diff --git a/web/components/dashboard/project-empty-state.tsx b/web/components/dashboard/project-empty-state.tsx index c0ac90f34e5..b1c5464b6a9 100644 --- a/web/components/dashboard/project-empty-state.tsx +++ b/web/components/dashboard/project-empty-state.tsx @@ -13,6 +13,7 @@ export const DashboardProjectEmptyState = observer(() => { // store hooks const { commandPalette: { toggleCreateProjectModal }, + eventTracker: { setTrackElement }, } = useApplication(); const { membership: { currentWorkspaceRole }, @@ -31,7 +32,13 @@ export const DashboardProjectEmptyState = observer(() => { Project empty state {canCreateProject && (
-
diff --git a/web/components/dashboard/widgets/recent-projects.tsx b/web/components/dashboard/widgets/recent-projects.tsx index aae8ff54b47..92d3145742b 100644 --- a/web/components/dashboard/widgets/recent-projects.tsx +++ b/web/components/dashboard/widgets/recent-projects.tsx @@ -71,6 +71,7 @@ export const RecentProjectsWidget: React.FC = observer((props) => { // store hooks const { commandPalette: { toggleCreateProjectModal }, + eventTracker: { setTrackElement }, } = useApplication(); const { membership: { currentWorkspaceRole }, @@ -105,6 +106,7 @@ export const RecentProjectsWidget: React.FC = observer((props) => { onClick={(e) => { e.preventDefault(); e.stopPropagation(); + setTrackElement("Sidebar"); toggleCreateProjectModal(true); }} > diff --git a/web/components/headers/projects.tsx b/web/components/headers/projects.tsx index 96929f7b09e..bb14127a828 100644 --- a/web/components/headers/projects.tsx +++ b/web/components/headers/projects.tsx @@ -53,7 +53,7 @@ export const ProjectsHeader = observer(() => { prependIcon={} size="sm" onClick={() => { - setTrackElement("PROJECTS_PAGE_HEADER"); + setTrackElement("Projects page"); commandPaletteStore.toggleCreateProjectModal(true); }} > diff --git a/web/components/integration/jira/give-details.tsx b/web/components/integration/jira/give-details.tsx index 0d90ba0a5d7..1652f448780 100644 --- a/web/components/integration/jira/give-details.tsx +++ b/web/components/integration/jira/give-details.tsx @@ -202,7 +202,7 @@ export const JiraGetImportDetail: React.FC = observer(() => { diff --git a/web/components/modules/modal.tsx b/web/components/modules/modal.tsx index 068b982e9f4..f55e1342292 100644 --- a/web/components/modules/modal.tsx +++ b/web/components/modules/modal.tsx @@ -55,7 +55,6 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { await createModule(workspaceSlug.toString(), selectedProjectId, payload) .then((res) => { handleClose(); - setToastAlert({ type: "success", title: "Success!", diff --git a/web/components/modules/module-card-item.tsx b/web/components/modules/module-card-item.tsx index f9236ef10f0..4172a188352 100644 --- a/web/components/modules/module-card-item.tsx +++ b/web/components/modules/module-card-item.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; import { Info, LinkIcon, Pencil, Star, Trash2 } from "lucide-react"; // hooks -import { useModule, useUser } from "hooks/store"; +import { useApplication, useModule, useUser } from "hooks/store"; import useToast from "hooks/use-toast"; // components import { CreateUpdateModuleModal, DeleteModuleModal } from "components/modules"; @@ -36,6 +36,9 @@ export const ModuleCardItem: React.FC = observer((props) => { membership: { currentProjectRole }, } = useUser(); const { getModuleById, addModuleToFavorites, removeModuleFromFavorites } = useModule(); + const { + eventTracker: { setTrackElement }, + } = useApplication(); // derived values const moduleDetails = getModuleById(moduleId); const isEditingAllowed = !!currentProjectRole && currentProjectRole >= EUserProjectRoles.MEMBER; @@ -83,12 +86,14 @@ export const ModuleCardItem: React.FC = observer((props) => { const handleEditModule = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); + setTrackElement("Modules page board layout"); setEditModal(true); }; const handleDeleteModule = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); + setTrackElement("Modules page board layout"); setDeleteModal(true); }; diff --git a/web/components/modules/module-list-item.tsx b/web/components/modules/module-list-item.tsx index c24e75198fa..3e9abbec70c 100644 --- a/web/components/modules/module-list-item.tsx +++ b/web/components/modules/module-list-item.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; import { Check, Info, LinkIcon, Pencil, Star, Trash2, User2 } from "lucide-react"; // hooks -import { useModule, useUser } from "hooks/store"; +import { useModule, useUser, useApplication } from "hooks/store"; import useToast from "hooks/use-toast"; // components import { CreateUpdateModuleModal, DeleteModuleModal } from "components/modules"; @@ -36,6 +36,9 @@ export const ModuleListItem: React.FC = observer((props) => { membership: { currentProjectRole }, } = useUser(); const { getModuleById, addModuleToFavorites, removeModuleFromFavorites } = useModule(); + const { + eventTracker: { setTrackElement }, + } = useApplication(); // derived values const moduleDetails = getModuleById(moduleId); const isEditingAllowed = !!currentProjectRole && currentProjectRole >= EUserProjectRoles.MEMBER; @@ -83,12 +86,14 @@ export const ModuleListItem: React.FC = observer((props) => { const handleEditModule = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); + setTrackElement("Modules page list layout"); setEditModal(true); }; const handleDeleteModule = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); + setTrackElement("Modules page list layout"); setDeleteModal(true); }; diff --git a/web/components/modules/modules-list-view.tsx b/web/components/modules/modules-list-view.tsx index 93b12d94c02..ea59e18118b 100644 --- a/web/components/modules/modules-list-view.tsx +++ b/web/components/modules/modules-list-view.tsx @@ -19,7 +19,10 @@ export const ModulesListView: React.FC = observer(() => { // theme const { resolvedTheme } = useTheme(); // store hooks - const { commandPalette: commandPaletteStore } = useApplication(); + const { + commandPalette: commandPaletteStore, + eventTracker: { setTrackElement }, + } = useApplication(); const { membership: { currentProjectRole }, currentUser, @@ -106,7 +109,10 @@ export const ModulesListView: React.FC = observer(() => { }} primaryButton={{ text: "Build your first module", - onClick: () => commandPaletteStore.toggleCreateModuleModal(true), + onClick: () => { + setTrackElement("Module empty state"); + commandPaletteStore.toggleCreateModuleModal(true); + }, }} size="lg" disabled={!isEditingAllowed} diff --git a/web/components/modules/sidebar.tsx b/web/components/modules/sidebar.tsx index f43326b6b0b..e2469b4b5d8 100644 --- a/web/components/modules/sidebar.tsx +++ b/web/components/modules/sidebar.tsx @@ -16,7 +16,7 @@ import { UserCircle2, } from "lucide-react"; // hooks -import { useModule, useUser } from "hooks/store"; +import { useModule, useUser, useApplication } from "hooks/store"; import useToast from "hooks/use-toast"; // components import { LinkModal, LinksList, SidebarProgressStats } from "components/core"; @@ -66,7 +66,9 @@ export const ModuleDetailsSidebar: React.FC = observer((props) => { membership: { currentProjectRole }, } = useUser(); const { getModuleById, updateModuleDetails, createModuleLink, updateModuleLink, deleteModuleLink } = useModule(); - + const { + eventTracker: { setTrackElement }, + } = useApplication(); const moduleDetails = getModuleById(moduleId); const { setToastAlert } = useToast(); @@ -303,7 +305,12 @@ export const ModuleDetailsSidebar: React.FC = observer((props) => { {isEditingAllowed && ( - setModuleDeleteModal(true)}> + { + setTrackElement("Module peek-overview"); + setModuleDeleteModal(true); + }} + > Delete module From e4d27d177b0b6449a01979e942b24bde893a9250 Mon Sep 17 00:00:00 2001 From: LAKHAN BAHETI Date: Fri, 2 Feb 2024 18:04:27 +0530 Subject: [PATCH 5/8] chore: issue related events updated --- web/components/headers/cycle-issues.tsx | 2 +- web/components/headers/module-issues.tsx | 2 +- web/components/headers/project-issues.tsx | 2 +- web/components/inbox/inbox-issue-actions.tsx | 32 ++--- .../inbox/modals/create-issue-modal.tsx | 33 ++--- web/components/issues/attachment/root.tsx | 35 +++++- .../issues/issue-detail/inbox/root.tsx | 38 +++++- web/components/issues/issue-detail/root.tsx | 118 ++++++++++++++++-- .../calendar/quick-add-issue-form.tsx | 18 ++- .../issue-layouts/empty-states/cycle.tsx | 2 +- .../issue-layouts/empty-states/module.tsx | 2 +- .../empty-states/project-issues.tsx | 2 +- .../empty-states/project-view.tsx | 2 +- .../gantt/quick-add-issue-form.tsx | 18 ++- .../issue-layouts/kanban/base-kanban-root.tsx | 10 +- .../issues/issue-layouts/kanban/block.tsx | 5 +- .../kanban/headers/group-by-card.tsx | 28 ++++- .../kanban/quick-add-issue-form.tsx | 18 ++- .../issues/issue-layouts/list/block.tsx | 7 +- .../issues/issue-layouts/list/blocks-list.tsx | 2 +- .../list/headers/group-by-card.tsx | 25 +++- .../list/quick-add-issue-form.tsx | 20 ++- .../properties/all-properties.tsx | 100 +++++++++++++-- .../quick-action-dropdowns/all-issue.tsx | 8 ++ .../quick-action-dropdowns/archived-issue.tsx | 16 ++- .../quick-action-dropdowns/cycle-issue.tsx | 11 ++ .../quick-action-dropdowns/module-issue.tsx | 11 ++ .../quick-action-dropdowns/project-issue.tsx | 11 +- .../spreadsheet/columns/assignee-column.tsx | 13 +- .../spreadsheet/columns/due-date-column.tsx | 14 ++- .../spreadsheet/columns/estimate-column.tsx | 11 +- .../spreadsheet/columns/label-column.tsx | 6 +- .../spreadsheet/columns/priority-column.tsx | 4 +- .../spreadsheet/columns/start-date-column.tsx | 14 ++- .../spreadsheet/columns/state-column.tsx | 4 +- .../issue-layouts/spreadsheet/issue-row.tsx | 20 ++- .../spreadsheet/quick-add-issue-form.tsx | 23 +++- .../issues/issue-modal/draft-issue-layout.tsx | 24 +++- web/components/issues/issue-modal/modal.tsx | 68 +++++----- web/components/issues/peek-overview/root.tsx | 115 ++++++++++++++++- web/components/issues/sub-issues/root.tsx | 68 +++++++++- .../states/create-update-state-inline.tsx | 8 +- web/components/states/delete-state-modal.tsx | 4 +- web/constants/spreadsheet.ts | 6 +- web/pages/onboarding/index.tsx | 2 +- web/store/application/event-tracker.store.ts | 74 ++++++++++- 46 files changed, 887 insertions(+), 169 deletions(-) diff --git a/web/components/headers/cycle-issues.tsx b/web/components/headers/cycle-issues.tsx index fc0075030e7..e2fcd2790ae 100644 --- a/web/components/headers/cycle-issues.tsx +++ b/web/components/headers/cycle-issues.tsx @@ -229,7 +229,7 @@ export const CycleIssuesHeader: React.FC = observer(() => {