setRemoveMemberModal(rowData)}
>
diff --git a/web/core/components/workspace/settings/invitations-list-item.tsx b/web/core/components/workspace/settings/invitations-list-item.tsx
index dc815b52cc3..1fa1fce2f60 100644
--- a/web/core/components/workspace/settings/invitations-list-item.tsx
+++ b/web/core/components/workspace/settings/invitations-list-item.tsx
@@ -5,13 +5,14 @@ import { observer } from "mobx-react";
import { useParams } from "next/navigation";
import { ChevronDown, LinkIcon, Trash2 } from "lucide-react";
// plane imports
-import { ROLE, EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
+import { ROLE, EUserPermissions, EUserPermissionsLevel, MEMBER_TRACKER_ELEMENTS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import { CustomSelect, TOAST_TYPE, setToast, TContextMenuItem, CustomMenu } from "@plane/ui";
import { cn, copyTextToClipboard } from "@plane/utils";
// components
import { ConfirmWorkspaceMemberRemove } from "@/components/workspace";
// hooks
+import { captureClick } from "@/helpers/event-tracker.helper";
import { useMember, useUserPermissions } from "@/hooks/store";
type Props = {
@@ -93,7 +94,12 @@ export const WorkspaceInvitationsListItem: FC
= observer((props) => {
},
{
key: "remove",
- action: () => setRemoveMemberModal(true),
+ action: () => {
+ captureClick({
+ elementName: MEMBER_TRACKER_ELEMENTS.WORKSPACE_INVITATIONS_LIST_CONTEXT_MENU,
+ });
+ setRemoveMemberModal(true);
+ },
title: t("common.remove"),
icon: Trash2,
shouldRender: isAdmin,
diff --git a/web/core/components/workspace/settings/member-columns.tsx b/web/core/components/workspace/settings/member-columns.tsx
index 1e5036fefc2..edff3f15ad4 100644
--- a/web/core/components/workspace/settings/member-columns.tsx
+++ b/web/core/components/workspace/settings/member-columns.tsx
@@ -4,7 +4,7 @@ import { Controller, useForm } from "react-hook-form";
import { Trash2 } from "lucide-react";
import { Disclosure } from "@headlessui/react";
// plane imports
-import { ROLE, EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
+import { ROLE, EUserPermissions, EUserPermissionsLevel, MEMBER_TRACKER_ELEMENTS } from "@plane/constants";
import { IUser, IWorkspaceMember } from "@plane/types";
// plane ui
import { CustomSelect, PopoverMenu, TOAST_TYPE, setToast } from "@plane/ui";
@@ -74,6 +74,7 @@ export const NameColumn: React.FC = (props) => {
setRemoveMemberModal(rowData)}
+ data-ph-element={MEMBER_TRACKER_ELEMENTS.WORKSPACE_MEMBER_TABLE_CONTEXT_MENU}
>
{id === currentUser?.id ? "Leave " : "Remove "}
diff --git a/web/core/components/workspace/settings/members-list-item.tsx b/web/core/components/workspace/settings/members-list-item.tsx
index 978b757b368..db7e7e2753e 100644
--- a/web/core/components/workspace/settings/members-list-item.tsx
+++ b/web/core/components/workspace/settings/members-list-item.tsx
@@ -13,7 +13,8 @@ import { MembersLayoutLoader } from "@/components/ui/loader/layouts/members-layo
import { ConfirmWorkspaceMemberRemove } from "@/components/workspace";
// constants
// hooks
-import { useEventTracker, useMember, useUser, useUserPermissions, useUserSettings, useWorkspace } from "@/hooks/store";
+import { captureError, captureSuccess } from "@/helpers/event-tracker.helper";
+import { useMember, useUser, useUserPermissions, useUserSettings, useWorkspace } from "@/hooks/store";
import { useAppRouter } from "@/hooks/use-app-router";
import { useMemberColumns } from "@/plane-web/components/workspace/settings/useMemberColumns";
@@ -32,7 +33,6 @@ export const WorkspaceMembersListItem: FC = observer((props) => {
workspace: { removeMemberFromWorkspace },
} = useMember();
const { leaveWorkspace } = useUserPermissions();
- const { captureEvent } = useEventTracker();
const { getWorkspaceRedirectionUrl } = useWorkspace();
const { fetchCurrentUserSettings } = useUserSettings();
const { t } = useTranslation();
@@ -45,18 +45,27 @@ export const WorkspaceMembersListItem: FC = observer((props) => {
.then(async () => {
await fetchCurrentUserSettings();
router.push(getWorkspaceRedirectionUrl());
- captureEvent(MEMBER_TRACKER_EVENTS.workspace.leave, {
- state: "SUCCESS",
- element: "Workspace settings members page",
+ captureSuccess({
+ eventName: MEMBER_TRACKER_EVENTS.workspace.leave,
+ payload: {
+ workspace: workspaceSlug,
+ },
});
})
- .catch((err: any) =>
+ .catch((err: any) => {
+ captureError({
+ eventName: MEMBER_TRACKER_EVENTS.workspace.leave,
+ payload: {
+ workspace: workspaceSlug,
+ },
+ error: err,
+ });
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
message: err?.error || t("something_went_wrong_please_try_again"),
- })
- );
+ });
+ });
};
const handleRemoveMember = async (memberId: string) => {
diff --git a/web/core/components/workspace/sidebar/projects-list-item.tsx b/web/core/components/workspace/sidebar/projects-list-item.tsx
index d6f4365793c..55278b0477b 100644
--- a/web/core/components/workspace/sidebar/projects-list-item.tsx
+++ b/web/core/components/workspace/sidebar/projects-list-item.tsx
@@ -12,7 +12,7 @@ import { createRoot } from "react-dom/client";
import { LinkIcon, Settings, Share2, LogOut, MoreHorizontal, ChevronRight } from "lucide-react";
import { Disclosure, Transition } from "@headlessui/react";
// plane helpers
-import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
+import { EUserPermissions, EUserPermissionsLevel, MEMBER_TRACKER_ELEMENTS } from "@plane/constants";
import { useOutsideClickDetector } from "@plane/hooks";
import { useTranslation } from "@plane/i18n";
// ui
@@ -23,7 +23,7 @@ import { Logo } from "@/components/common/logo";
import { LeaveProjectModal, PublishProjectModal } from "@/components/project";
// helpers
// hooks
-import { useAppTheme, useCommandPalette, useEventTracker, useProject, useUserPermissions } from "@/hooks/store";
+import { useAppTheme, useCommandPalette, useProject, useUserPermissions } from "@/hooks/store";
import { usePlatformOS } from "@/hooks/use-platform-os";
// plane-web components
import { ProjectNavigationRoot } from "@/plane-web/components/sidebar";
@@ -59,7 +59,6 @@ export const SidebarProjectsListItem: React.FC = observer((props) => {
// store hooks
const { sidebarCollapsed } = useAppTheme();
const { t } = useTranslation();
- const { setTrackElement } = useEventTracker();
const { getPartialProjectById } = useProject();
const { isMobile } = usePlatformOS();
const { allowPermissions } = useUserPermissions();
@@ -97,7 +96,6 @@ export const SidebarProjectsListItem: React.FC = observer((props) => {
);
const handleLeaveProject = () => {
- setTrackElement("APP_SIDEBAR_PROJECT_DROPDOWN");
setLeaveProjectModal(true);
};
@@ -376,7 +374,10 @@ export const SidebarProjectsListItem: React.FC = observer((props) => {
{/* leave project */}
{!isAuthorized && (
-
+
{t("leave_project")}