Skip to content

Commit a172cf4

Browse files
committed
Fix provider is not added to some telemetry events
1 parent 7fdab4f commit a172cf4

File tree

5 files changed

+46
-22
lines changed

5 files changed

+46
-22
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1+
import { TelemetryEvent, TelemetryPageView } from 'uiSrc/telemetry'
2+
13
export enum ReleaseNotesSource {
24
helpCenter = 'Help Center',
35
updateNotification = 'Update notification'
46
}
7+
8+
export const eventsWithExcludedProvider: string[] = [
9+
TelemetryPageView.DATABASES_LIST_PAGE,
10+
TelemetryPageView.SETTINGS_PAGE,
11+
TelemetryEvent.NOTIFICATIONS_HISTORY_OPENED,
12+
TelemetryEvent.CONFIG_DATABASES_DATABASE_LIST_SEARCHED,
13+
TelemetryEvent.INSIGHTS_PANEL_OPENED,
14+
TelemetryEvent.INSIGHTS_PANEL_CLOSED,
15+
TelemetryEvent.INSIGHTS_PANEL_TAB_CHANGED,
16+
TelemetryEvent.CONFIG_DATABASES_REDIS_IMPORT_CLICKED,
17+
TelemetryEvent.CONFIG_DATABASES_CLICKED
18+
]

redisinsight/ui/src/pages/browser/modules/key-details/KeyDetails.tsx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const KeyDetails = (props: Props) => {
4545
const { viewType } = useSelector(keysSelector)
4646
const { loading, error = '', data } = useSelector(selectedKeySelector)
4747
const isKeySelected = !isNull(useSelector(selectedKeyDataSelector))
48-
const { type: keyType, name: keyName, length: keyLength } = useSelector(selectedKeyDataSelector) ?? {
48+
const { type: keyType, length: keyLength } = useSelector(selectedKeyDataSelector) ?? {
4949
type: KeyTypes.String,
5050
}
5151

@@ -55,14 +55,7 @@ const KeyDetails = (props: Props) => {
5555
if (keyProp === null) {
5656
return
5757
}
58-
// Restore key details from context in future
59-
// (selectedKey.data?.name !== keyProp)
60-
dispatch(fetchKeyInfo(keyProp))
61-
dispatch(setSelectedKeyRefreshDisabled(false))
62-
}, [keyProp])
63-
64-
useEffect(() => {
65-
if (!isUndefined(keyName)) {
58+
if (keyProp?.data) {
6659
sendEventTelemetry({
6760
event: getBasedOnViewTypeEvent(
6861
viewType,
@@ -76,7 +69,11 @@ const KeyDetails = (props: Props) => {
7669
}
7770
})
7871
}
79-
}, [keyName])
72+
// Restore key details from context in future
73+
// (selectedKey.data?.name !== keyProp)
74+
dispatch(fetchKeyInfo(keyProp))
75+
dispatch(setSelectedKeyRefreshDisabled(false))
76+
}, [keyProp])
8077

8178
const onCloseAddItemPanel = () => {
8279
sendEventTelemetry({

redisinsight/ui/src/pages/home/components/database-list-component/DatabasesListWrapper.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,15 @@ const DatabasesListWrapper = ({ width, onEditInstance, editedInstance, onDeleteI
145145
...modulesSummary,
146146
}
147147
})
148-
dispatch(checkConnectToInstanceAction(id, connectToInstance))
148+
dispatch(checkConnectToInstanceAction(id, connectToInstance, undefined, contextInstanceId !== id))
149149
}
150150

151-
const handleClickDeleteInstance = (id: string) => {
151+
const handleClickDeleteInstance = ({ id, provider }: Instance) => {
152152
sendEventTelemetry({
153153
event: TelemetryEvent.CONFIG_DATABASES_SINGLE_DATABASE_DELETE_CLICKED,
154154
eventData: {
155-
databaseId: id
155+
databaseId: id,
156+
provider
156157
}
157158
})
158159
showPopover(id)
@@ -162,7 +163,8 @@ const DatabasesListWrapper = ({ width, onEditInstance, editedInstance, onDeleteI
162163
sendEventTelemetry({
163164
event: TelemetryEvent.CONFIG_DATABASES_DATABASE_EDIT_CLICKED,
164165
eventData: {
165-
databaseId: instance.id
166+
databaseId: instance.id,
167+
provider: instance.provider,
166168
}
167169
})
168170
onEditInstance(instance)
@@ -394,7 +396,7 @@ const DatabasesListWrapper = ({ width, onEditInstance, editedInstance, onDeleteI
394396
updateLoading={false}
395397
showPopover={showPopover}
396398
handleDeleteItem={() => handleDeleteInstance(instance)}
397-
handleButtonClick={() => handleClickDeleteInstance(instance.id)}
399+
handleButtonClick={() => handleClickDeleteInstance(instance)}
398400
testid={`delete-instance-${instance.id}`}
399401
/>
400402
</>

redisinsight/ui/src/telemetry/interfaces.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,21 @@ export interface ITelemetryIdentify {
66
sessionId: number
77
}
88

9+
export type EventData = {
10+
[key: string]: any
11+
provider?: string
12+
}
13+
914
export interface ITelemetrySendEvent {
1015
event: TelemetryEvent
11-
eventData?: Object
16+
eventData?: EventData
1217
nonTracking?: boolean
1318
traits?: Object
1419
}
1520

1621
export interface ITelemetrySendPageView {
1722
name: string
18-
eventData?: Object
23+
eventData?: EventData
1924
databaseId?: string
2025
nonTracking?: boolean
2126
}

redisinsight/ui/src/telemetry/telemetryUtils.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { KeyViewType } from 'uiSrc/slices/interfaces/keys'
1111
import { IModuleSummary, ITelemetrySendEvent, ITelemetrySendPageView, RedisModulesKeyType } from 'uiSrc/telemetry/interfaces'
1212
import { apiService } from 'uiSrc/services'
1313
import { store } from 'uiSrc/slices/store'
14+
import { eventsWithExcludedProvider } from 'uiSrc/constants/telemetry'
1415
import { AdditionalRedisModule } from 'apiSrc/modules/database/models/additional.redis.module'
1516
import {
1617
IRedisModulesSummary,
@@ -30,22 +31,27 @@ const sendEventTelemetry = async ({ event, eventData = {}, traits = {} }: ITelem
3031
if (!isAnalyticsGranted) {
3132
return
3233
}
33-
const provider = getProvider()
34+
35+
if (!eventData.provider && !eventsWithExcludedProvider.includes(event)) {
36+
eventData.provider = getProvider()
37+
}
3438
await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_EVENT}`,
35-
{ event, eventData: { ...eventData, provider }, traits })
39+
{ event, eventData, traits })
3640
} catch (e) {
3741
// continue regardless of error
3842
}
3943
}
4044

41-
const sendPageViewTelemetry = async ({ name, eventData }: ITelemetrySendPageView) => {
45+
const sendPageViewTelemetry = async ({ name, eventData = {} }: ITelemetrySendPageView) => {
4246
try {
4347
const isAnalyticsGranted = checkIsAnalyticsGranted()
4448
if (!isAnalyticsGranted) {
4549
return
4650
}
47-
const provider = getProvider()
48-
await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_PAGE}`, { event: name, eventData: { ...eventData, provider } })
51+
if (!eventData.provider && !eventsWithExcludedProvider.includes(name)) {
52+
eventData.provider = getProvider()
53+
}
54+
await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_PAGE}`, { event: name, eventData })
4955
} catch (e) {
5056
// continue regardless of error
5157
}

0 commit comments

Comments
 (0)