Skip to content

Commit 6692259

Browse files
author
Artem
committed
#RI-4938 send utm parameters to api with /me endpoint
1 parent 1acc900 commit 6692259

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

redisinsight/ui/src/slices/interfaces/cloud.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,13 @@ export enum OAuthSocialSource {
7373
TriggersAndFunctions = 'triggers_and_functions',
7474
'triggers and functions' = 'workbench triggers_and_functions',
7575
}
76+
77+
export enum CloudSsoUtmCampaign {
78+
ListOfDatabases = 'list_of_databases',
79+
Workbench = 'redisinsight_workbench',
80+
BrowserSearch = 'redisinsight_browser_search',
81+
BrowserOverview = 'redisinsight_browser_search',
82+
BrowserFilter = 'browser_filter',
83+
GuidesAndTutorials = 'redisinsight_doc_guide',
84+
Unknown = 'other',
85+
}

redisinsight/ui/src/slices/oauth/cloud.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
} from '../app/notifications'
3333
import { checkConnectToInstanceAction, setConnectedInstanceId } from '../instances/instances'
3434
import { setAppContextInitialState } from '../app/context'
35+
import { getCloudSsoUtmParams } from 'uiSrc/utils/oauth/cloudSsoUtm';
3536

3637
export const initialState: StateAppOAuth = {
3738
loading: false,
@@ -264,11 +265,16 @@ export function createFreeDbSuccess(id: string, history: any) {
264265

265266
// Asynchronous thunk action
266267
export function fetchUserInfo(onSuccessAction?: (isMultiAccount: boolean) => void, onFailAction?: () => void) {
267-
return async (dispatch: AppDispatch) => {
268+
return async (dispatch: AppDispatch, getState: () => RootState) => {
268269
dispatch(getUserInfo())
269270

270271
try {
271-
const { data, status } = await apiService.get<CloudUser>(ApiEndpoints.CLOUD_ME)
272+
const { data, status } = await apiService.get<CloudUser>(
273+
ApiEndpoints.CLOUD_ME,
274+
{
275+
params: getCloudSsoUtmParams(getState().oauth?.cloud?.source),
276+
},
277+
)
272278

273279
if (isStatusSuccessful(status)) {
274280
const isMultiAccount = (data?.accounts?.length ?? 0) > 1
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { CloudSsoUtmCampaign, OAuthSocialSource } from 'uiSrc/slices/interfaces'
2+
3+
// Map oauth social source to utm campaign parameter
4+
export const getCloudSsoUtmCampaign = (source?: string | null): CloudSsoUtmCampaign => {
5+
switch (source) {
6+
case OAuthSocialSource.ListOfDatabases:
7+
return CloudSsoUtmCampaign.ListOfDatabases
8+
case OAuthSocialSource.BrowserSearch:
9+
return CloudSsoUtmCampaign.BrowserSearch
10+
case OAuthSocialSource.RediSearch:
11+
case OAuthSocialSource.RedisJSON:
12+
case OAuthSocialSource.RedisTimeSeries:
13+
case OAuthSocialSource.RedisGraph:
14+
case OAuthSocialSource.RedisBloom:
15+
case OAuthSocialSource['triggers and functions']:
16+
return CloudSsoUtmCampaign.Workbench
17+
case OAuthSocialSource.BrowserContentMenu:
18+
return CloudSsoUtmCampaign.BrowserOverview
19+
case OAuthSocialSource.BrowserFiltering:
20+
return CloudSsoUtmCampaign.BrowserFilter
21+
// todo: not implemented yet
22+
// case OAuthSocialSource.Guides:
23+
// return CloudSsoUtmCampaign.GuidesAndTutorials
24+
default:
25+
return CloudSsoUtmCampaign.Unknown
26+
}
27+
}
28+
29+
// Create search query utm parameters
30+
export const getCloudSsoUtmParams = (source?: string | null): URLSearchParams => new URLSearchParams([
31+
['source', 'redisinsight'],
32+
['medium', 'app'], // todo: distinguish between electron and web?
33+
['campaign', getCloudSsoUtmCampaign(source)],
34+
])

0 commit comments

Comments
 (0)