Skip to content

Commit 4f2f2ba

Browse files
author
Artem
committed
add cloudRecommendedSettings user property
1 parent 863100f commit 4f2f2ba

File tree

6 files changed

+48
-19
lines changed

6 files changed

+48
-19
lines changed

redisinsight/api/src/modules/analytics/analytics.service.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ describe('AnalyticsService', () => {
196196
event: TelemetryEvents.ApplicationStarted,
197197
eventData: {},
198198
nonTracking: false,
199+
traits: {
200+
telemetry: 'will be overwritten',
201+
custom: 'trait',
202+
},
199203
});
200204

201205
expect(mockAnalyticsPage).toHaveBeenCalledWith({
@@ -205,6 +209,7 @@ describe('AnalyticsService', () => {
205209
context: {
206210
traits: {
207211
telemetry: Telemetry.Enabled,
212+
custom: 'trait',
208213
},
209214
},
210215
properties: {

redisinsight/api/src/modules/analytics/analytics.service.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface ITelemetryEvent {
1313
event: string;
1414
eventData: Object;
1515
nonTracking: boolean;
16+
traits?: Object;
1617
}
1718

1819
export interface ITelemetryInitEvent {
@@ -43,7 +44,7 @@ export class AnalyticsService {
4344

4445
private appVersion: string = '2.0.0';
4546

46-
private analytics;
47+
private analytics: Analytics;
4748

4849
constructor(
4950
private settingsService: SettingsService,
@@ -80,7 +81,9 @@ export class AnalyticsService {
8081
// for analytics is granted or not.
8182
// If permissions not granted
8283
// anonymousId will includes "00000000-0000-0000-0000-000000000001" value without any user identifiers.
83-
const { event, eventData, nonTracking } = payload;
84+
const {
85+
event, eventData, nonTracking, traits = {},
86+
} = payload;
8487
const isAnalyticsGranted = await this.checkIsAnalyticsGranted();
8588

8689
if (isAnalyticsGranted || nonTracking) {
@@ -90,8 +93,9 @@ export class AnalyticsService {
9093
event,
9194
context: {
9295
traits: {
96+
...traits,
9397
telemetry: isAnalyticsGranted ? Telemetry.Enabled : Telemetry.Disabled,
94-
}
98+
},
9599
},
96100
properties: {
97101
...eventData,
@@ -118,7 +122,9 @@ export class AnalyticsService {
118122
// user in any way. When `nonTracking` is True, the event is sent regardless of whether the user's permission
119123
// for analytics is granted or not.
120124
// If permissions not granted anonymousId includes "UNSET" value without any user identifiers.
121-
const { event, eventData, nonTracking } = payload;
125+
const {
126+
event, eventData, nonTracking, traits = {},
127+
} = payload;
122128
const isAnalyticsGranted = await this.checkIsAnalyticsGranted();
123129

124130
if (isAnalyticsGranted || nonTracking) {
@@ -128,8 +134,9 @@ export class AnalyticsService {
128134
integrations: { Amplitude: { session_id: this.sessionId } },
129135
context: {
130136
traits: {
137+
...traits,
131138
telemetry: isAnalyticsGranted ? Telemetry.Enabled : Telemetry.Disabled,
132-
}
139+
},
133140
},
134141
properties: {
135142
...eventData,

redisinsight/api/src/modules/analytics/dto/analytics.dto.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,13 @@ export class SendEventDto {
3636
@IsOptional()
3737
@IsBoolean()
3838
nonTracking: boolean = false;
39+
40+
@ApiPropertyOptional({
41+
description: 'User data.',
42+
type: Object,
43+
example: { telemetry: true },
44+
})
45+
@IsOptional()
46+
@ValidateNested()
47+
traits: Object = {};
3948
}

redisinsight/ui/src/components/oauth/oauth-social/OAuthSocial.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,25 @@ const OAuthSocial = ({ type = OAuthSocialType.Modal, hideTitle = false }: Props)
4040
const isAutodiscovery = type === OAuthSocialType.Autodiscovery
4141
const getAction = () => (isAutodiscovery ? 'import' : 'create')
4242

43-
const sendTelemetry = (accountOption: string) => sendEventTelemetry({
44-
event: TelemetryEvent.CLOUD_SIGN_IN_SOCIAL_ACCOUNT_SELECTED,
45-
eventData: {
46-
accountOption,
47-
action: getAction(),
48-
recommendedSettings: isAutodiscovery
49-
? undefined
50-
: (!isRecommendedFeatureEnabled?.flag
51-
? 'not displayed'
52-
: (isRecommended ? 'enabled' : 'disabled'))
53-
}
54-
})
43+
const sendTelemetry = (accountOption: string) => {
44+
const cloudRecommendedSettings = isAutodiscovery
45+
? undefined
46+
: (!isRecommendedFeatureEnabled?.flag
47+
? 'not displayed'
48+
: (isRecommended ? 'enabled' : 'disabled'))
49+
50+
return sendEventTelemetry({
51+
event: TelemetryEvent.CLOUD_SIGN_IN_SOCIAL_ACCOUNT_SELECTED,
52+
eventData: {
53+
accountOption,
54+
action: getAction(),
55+
cloudRecommendedSettings
56+
},
57+
traits: {
58+
cloudRecommendedSettings
59+
}
60+
})
61+
}
5562

5663
const handleClickSso = () => {
5764
dispatch(signIn())

redisinsight/ui/src/telemetry/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface ITelemetrySendEvent {
1010
event: TelemetryEvent
1111
eventData?: Object
1212
nonTracking?: boolean
13+
traits?: Object
1314
}
1415

1516
export interface ITelemetrySendPageView {

redisinsight/ui/src/telemetry/telemetryUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ import {
1919
import { TelemetryEvent } from './events'
2020
import { checkIsAnalyticsGranted } from './checkAnalytics'
2121

22-
const sendEventTelemetry = async ({ event, eventData = {} }: ITelemetrySendEvent) => {
22+
const sendEventTelemetry = async ({ event, eventData = {}, traits = {} }: ITelemetrySendEvent) => {
2323
try {
2424
const isAnalyticsGranted = checkIsAnalyticsGranted()
2525
if (!isAnalyticsGranted) {
2626
return
2727
}
28-
await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_EVENT}`, { event, eventData })
28+
await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_EVENT}`, { event, eventData, traits })
2929
} catch (e) {
3030
// continue regardless of error
3131
}

0 commit comments

Comments
 (0)