Skip to content

Commit f0034e1

Browse files
feat: capture quick filters related events (#42481)
1 parent cdd02a2 commit f0034e1

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const QuickFiltersEvents = {
2+
QuickFilterCreated: 'quick filter created',
3+
QuickFilterUpdated: 'quick filter updated',
4+
QuickFilterSelected: 'quick filter selected',
5+
QuickFiltersModalOpened: 'quick filters modal opened',
6+
}

frontend/src/lib/components/QuickFilters/quickFiltersLogic.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { actions, afterMount, kea, key, path, props } from 'kea'
22
import { loaders } from 'kea-loaders'
3+
import posthog from 'posthog-js'
34

45
import api from 'lib/api'
56
import { lemonToast } from 'lib/lemon-ui/LemonToast/LemonToast'
67

78
import { QuickFilterContext } from '~/queries/schema/schema-general'
89
import { QuickFilter } from '~/types'
910

11+
import { QuickFiltersEvents } from './consts'
1012
import type { quickFiltersLogicType } from './quickFiltersLogicType'
1113

1214
export interface QuickFiltersLogicProps {
@@ -42,12 +44,27 @@ export const quickFiltersLogic = kea<quickFiltersLogicType>([
4244
...payload,
4345
contexts: [props.context],
4446
})
47+
4548
lemonToast.success('Quick filter created successfully')
49+
posthog.capture(QuickFiltersEvents.QuickFilterCreated, {
50+
name: payload.name,
51+
property_name: payload.property_name,
52+
type: payload.type,
53+
options: payload.options,
54+
context: props.context,
55+
})
4656
return [newFilter, ...values.quickFilters]
4757
},
4858
updateFilter: async ({ id, payload }) => {
4959
const updatedFilter = await api.quickFilters.update(id, payload)
5060
lemonToast.success('Quick filter updated successfully')
61+
posthog.capture(QuickFiltersEvents.QuickFilterUpdated, {
62+
...(payload.name && { name: payload.name }),
63+
...(payload.property_name && { property_name: payload.property_name }),
64+
...(payload.type && { type: payload.type }),
65+
...(payload.options && { options: payload.options }),
66+
context: props.context,
67+
})
5168
return values.quickFilters.map((f: QuickFilter) => (f.id === id ? updatedFilter : f))
5269
},
5370
deleteFilter: async ({ id }) => {

frontend/src/lib/components/QuickFilters/quickFiltersModalLogic.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { actions, connect, kea, key, listeners, path, props, reducers, selectors } from 'kea'
2+
import posthog from 'posthog-js'
23

34
import { QuickFilter } from '~/types'
45

6+
import { QuickFiltersEvents } from './consts'
57
import { QuickFiltersLogicProps, quickFiltersLogic } from './quickFiltersLogic'
68
import type { quickFiltersModalLogicType } from './quickFiltersModalLogicType'
79

@@ -65,7 +67,7 @@ export const quickFiltersModalLogic = kea<quickFiltersModalLogicType>([
6567
],
6668
}),
6769

68-
listeners(({ actions }) => ({
70+
listeners(({ actions, props }) => ({
6971
startAddNew: () => {
7072
actions.setEditingFilter(null)
7173
actions.setView('form')
@@ -82,5 +84,10 @@ export const quickFiltersModalLogic = kea<quickFiltersModalLogicType>([
8284
handleFormBack: () => {
8385
actions.setView('list')
8486
},
87+
openModal: () => {
88+
posthog.capture(QuickFiltersEvents.QuickFiltersModalOpened, {
89+
context: props.context,
90+
})
91+
},
8592
})),
8693
])

frontend/src/lib/components/QuickFilters/quickFiltersSectionLogic.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { actions, connect, kea, key, listeners, path, props, reducers } from 'kea'
2+
import posthog from 'posthog-js'
23

34
import { quickFiltersLogic } from 'lib/components/QuickFilters'
45

56
import { QuickFilterContext } from '~/queries/schema/schema-general'
67
import { PropertyOperator, QuickFilterOption } from '~/types'
78

9+
import { QuickFiltersEvents } from './consts'
810
import type { quickFiltersSectionLogicType } from './quickFiltersSectionLogicType'
911

1012
export interface SelectedQuickFilter {
@@ -58,12 +60,21 @@ export const quickFiltersSectionLogic = kea<quickFiltersSectionLogicType>([
5860
],
5961
}),
6062

61-
listeners(({ actions, values }) => ({
63+
listeners(({ actions, values, props }) => ({
6264
deleteFilter: ({ id }) => {
6365
const deletedFilter = values.quickFilters.find((f) => f.id === id)
6466
if (deletedFilter) {
6567
actions.clearQuickFilter(deletedFilter.property_name)
6668
}
6769
},
70+
setQuickFilterValue: ({ propertyName, option }) => {
71+
posthog.capture(QuickFiltersEvents.QuickFilterSelected, {
72+
name: values.quickFilters.find((f) => f.property_name === propertyName)?.name,
73+
property_name: propertyName,
74+
label: option.label,
75+
value: option.value,
76+
context: props.context,
77+
})
78+
},
6879
})),
6980
])

0 commit comments

Comments
 (0)