Skip to content

Commit 799ca0e

Browse files
feat(studio): additional index advisor events (supabase#41104)
* feat: add tracking for indexes tab in query performance * chore: remove console log * fix: dismiss index advisor banner when enabled
1 parent cb25d23 commit 799ca0e

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

apps/studio/components/interfaces/QueryPerformance/QueryIndexes.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Check, Lightbulb, Table2 } from 'lucide-react'
2-
import { useState } from 'react'
2+
import { useState, useEffect } from 'react'
33

44
import { AccordionTrigger } from '@ui/components/shadcn/ui/accordion'
55
import { useIndexAdvisorStatus } from 'components/interfaces/QueryPerformance/hooks/useIsIndexAdvisorStatus'
@@ -35,6 +35,7 @@ import {
3535
import { EnableIndexAdvisorButton } from './IndexAdvisor/EnableIndexAdvisorButton'
3636
import { DocsButton } from 'components/ui/DocsButton'
3737
import { DOCS_URL } from 'lib/constants'
38+
import { useTrack } from 'lib/telemetry/track'
3839

3940
interface QueryIndexesProps {
4041
selectedRow: any
@@ -49,6 +50,8 @@ export const QueryIndexes = ({ selectedRow }: QueryIndexesProps) => {
4950
const { data: project } = useSelectedProjectQuery()
5051
const [showStartupCosts, setShowStartupCosts] = useState(false)
5152
const [isExecuting, setIsExecuting] = useState(false)
53+
const track = useTrack()
54+
const [hasTrackedTabView, setHasTrackedTabView] = useState(false)
5255

5356
const {
5457
data: usedIndexes,
@@ -100,10 +103,27 @@ export const QueryIndexes = ({ selectedRow }: QueryIndexesProps) => {
100103

101104
const invalidateQueries = useIndexInvalidation()
102105

106+
useEffect(() => {
107+
if (!isLoadingIndexAdvisorResult && !hasTrackedTabView) {
108+
track('index_advisor_tab_clicked', {
109+
hasRecommendations: hasIndexRecommendation,
110+
isIndexAdvisorEnabled: isIndexAdvisorEnabled,
111+
})
112+
setHasTrackedTabView(true)
113+
}
114+
}, [
115+
isLoadingIndexAdvisorResult,
116+
hasIndexRecommendation,
117+
hasTrackedTabView,
118+
track,
119+
isIndexAdvisorEnabled,
120+
])
121+
103122
const createIndex = async () => {
104123
if (index_statements.length === 0) return
105124

106125
setIsExecuting(true)
126+
track('index_advisor_create_indexes_button_clicked')
107127

108128
try {
109129
await createIndexes({

apps/studio/components/layouts/ObservabilityLayout/ObservabilityLayout.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ const ObservabilityLayoutContent = ({
5555

5656
useEffect(() => {
5757
const isQueryPerformancePage = pathname?.includes('/query-performance')
58-
const wasQueryPerformancePage = prevPathnameRef.current?.includes('/query-performance')
5958

6059
if (
6160
isQueryPerformancePage &&
@@ -69,7 +68,7 @@ const ObservabilityLayoutContent = ({
6968
content: <BannerIndexAdvisor />,
7069
priority: 3,
7170
})
72-
} else if (isIndexAdvisorBannerDismissed || !isQueryPerformancePage) {
71+
} else if (isIndexAdvisorBannerDismissed || !isQueryPerformancePage || isIndexAdvisorEnabled) {
7372
dismissBanner('index-advisor-banner')
7473
}
7574

packages/common/telemetry-constants.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,6 +1130,34 @@ export interface IndexAdvisorBannerDismissButtonClickedEvent {
11301130
groups: TelemetryGroups
11311131
}
11321132

1133+
/**
1134+
* Index Advisor tab clicked event.
1135+
*
1136+
* @group Events
1137+
* @source studio
1138+
* @page /observability/query-performance
1139+
*/
1140+
export interface IndexAdvisorTabClickedEvent {
1141+
action: 'index_advisor_tab_clicked'
1142+
properties: {
1143+
hasRecommendations: boolean
1144+
isIndexAdvisorEnabled: boolean
1145+
}
1146+
groups: TelemetryGroups
1147+
}
1148+
1149+
/**
1150+
* Index Advisor create indexes button clicked event.
1151+
*
1152+
* @group Events
1153+
* @source studio
1154+
* @page /observability/query-performance
1155+
*/
1156+
export interface IndexAdvisorCreateIndexesButtonClickedEvent {
1157+
action: 'index_advisor_create_indexes_button_clicked'
1158+
groups: TelemetryGroups
1159+
}
1160+
11331161
/**
11341162
* User clicked the dismiss button on a banner in studio Observability pages.
11351163
*
@@ -2536,6 +2564,8 @@ export type TelemetryEvent =
25362564
| IndexAdvisorBannerEnableButtonClickedEvent
25372565
| IndexAdvisorBannerDismissButtonClickedEvent
25382566
| IndexAdvisorDialogEnableButtonClickedEvent
2567+
| IndexAdvisorTabClickedEvent
2568+
| IndexAdvisorCreateIndexesButtonClickedEvent
25392569
| EdgeFunctionDeployButtonClickedEvent
25402570
| EdgeFunctionDeployUpdatesConfirmClickedEvent
25412571
| EdgeFunctionAiAssistantButtonClickedEvent

0 commit comments

Comments
 (0)