Skip to content

Commit be5c9b8

Browse files
committed
settings: add instrumentation
1 parent a442020 commit be5c9b8

File tree

5 files changed

+29
-3
lines changed

5 files changed

+29
-3
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
export type BreadcrumbsAnalyticsEventParameters = {
22
'breadcrumbs.link.clicked': {organization: null};
3-
'breadcrumbs.menu.clicked': {organization: null};
3+
'breadcrumbs.menu.opened': {organization: null};
44
};
55

66
export const breadcrumbsAnalyticsEventMap: Record<
77
keyof BreadcrumbsAnalyticsEventParameters,
88
string | null
99
> = {
1010
'breadcrumbs.link.clicked': 'Breadcrumbs: Link Clicked',
11-
'breadcrumbs.menu.clicked': 'Breadcrumbs: Menu Clicked',
11+
'breadcrumbs.menu.opened': 'Breadcrumbs: Menu Opened',
1212
};

static/app/views/settings/components/settingsBreadcrumb/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import styled from '@emotion/styled';
33

44
import {t} from 'sentry/locale';
55
import {space} from 'sentry/styles/space';
6+
import {trackAnalytics} from 'sentry/utils/analytics';
67
import getRouteStringFromRoutes from 'sentry/utils/getRouteStringFromRoutes';
78
import recreateRoute from 'sentry/utils/recreateRoute';
89

@@ -31,6 +32,10 @@ function SettingsBreadcrumb({className, routes, params}: Props) {
3132

3233
const lastRouteIndex = routes.map(r => !!r.name).lastIndexOf(true);
3334

35+
function onSettingsBreadcrumbLinkClick() {
36+
trackAnalytics('breadcrumbs.link.clicked', {organization: null});
37+
}
38+
3439
return (
3540
<Breadcrumbs aria-label={t('Settings Breadcrumbs')} className={className}>
3641
{routes.map((route, i) => {
@@ -54,7 +59,10 @@ function SettingsBreadcrumb({className, routes, params}: Props) {
5459
}
5560
return (
5661
<Crumb key={`${route.name}:${route.path}`}>
57-
<CrumbLink to={recreateRoute(route, {routes, params})}>
62+
<CrumbLink
63+
to={recreateRoute(route, {routes, params})}
64+
onClick={onSettingsBreadcrumbLinkClick}
65+
>
5866
{pathTitle || route.name}
5967
</CrumbLink>
6068
{isLast ? null : <Divider />}

static/app/views/settings/components/settingsBreadcrumb/organizationCrumb.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import IdBadge from 'sentry/components/idBadge';
66
import {t} from 'sentry/locale';
77
import OrganizationsStore from 'sentry/stores/organizationsStore';
88
import {useLegacyStore} from 'sentry/stores/useLegacyStore';
9+
import {trackAnalytics} from 'sentry/utils/analytics';
910
import recreateRoute from 'sentry/utils/recreateRoute';
1011
import {resolveRoute} from 'sentry/utils/resolveRoute';
1112
import {testableWindowLocation} from 'sentry/utils/testableWindowLocation';
@@ -76,6 +77,11 @@ function OrganizationCrumb({routes, route, ...props}: SettingsBreadcrumbProps) {
7677
</CrumbLink>
7778
}
7879
onCrumbSelect={handleSelect}
80+
onOpenChange={open => {
81+
if (open) {
82+
trackAnalytics('breadcrumbs.menu.opened', {organization: null});
83+
}
84+
}}
7985
hasMenu={hasMenu}
8086
route={route}
8187
value={organization.slug}

static/app/views/settings/components/settingsBreadcrumb/projectCrumb.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {ProjectAvatar} from 'sentry/components/core/avatar/projectAvatar';
44
import IdBadge from 'sentry/components/idBadge';
55
import LoadingIndicator from 'sentry/components/loadingIndicator';
66
import {space} from 'sentry/styles/space';
7+
import {trackAnalytics} from 'sentry/utils/analytics';
78
import recreateRoute from 'sentry/utils/recreateRoute';
89
import replaceRouterParams from 'sentry/utils/replaceRouterParams';
910
import {useNavigate} from 'sentry/utils/useNavigate';
@@ -65,6 +66,11 @@ function ProjectCrumb({routes, route, ...props}: SettingsBreadcrumbProps) {
6566
}
6667
value={activeProject?.slug ?? ''}
6768
onCrumbSelect={handleSelect}
69+
onOpenChange={open => {
70+
if (open) {
71+
trackAnalytics('breadcrumbs.menu.opened', {organization: null});
72+
}
73+
}}
6874
onSearch={onSearch}
6975
options={projects.map(project => ({
7076
value: project.slug,

static/app/views/settings/components/settingsBreadcrumb/teamCrumb.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {TeamAvatar} from 'sentry/components/core/avatar/teamAvatar';
22
import IdBadge from 'sentry/components/idBadge';
33
import {t} from 'sentry/locale';
4+
import {trackAnalytics} from 'sentry/utils/analytics';
45
import recreateRoute from 'sentry/utils/recreateRoute';
56
import {useNavigate} from 'sentry/utils/useNavigate';
67
import {useParams} from 'sentry/utils/useParams';
@@ -38,6 +39,11 @@ function TeamCrumb({routes, route, ...props}: SettingsBreadcrumbProps) {
3839
})
3940
);
4041
}}
42+
onOpenChange={open => {
43+
if (open) {
44+
trackAnalytics('breadcrumbs.menu.opened', {organization: null});
45+
}
46+
}}
4147
hasMenu={hasMenu}
4248
route={route}
4349
value={team.slug}

0 commit comments

Comments
 (0)