Skip to content

Commit 4d9646b

Browse files
Merge pull request #2575 from RedisInsight/fe/feature/RI-4865_Send_frontend_events_in_batches
#RI-4865 - [FE] send frontend events in batches
2 parents 652b114 + 3d0a733 commit 4d9646b

File tree

29 files changed

+64
-523
lines changed

29 files changed

+64
-523
lines changed

redisinsight/ui/src/components/cli/components/cli-header/CliHeader.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,5 @@ it('should "processCliClient" action be called after close cli with mocked sessi
126126
resetCliSettings(),
127127
resetOutputLoading(),
128128
]
129-
expect(store.getActions()).toEqual(expectedActions)
129+
expect(store.getActions().slice(0, expectedActions.length)).toEqual(expectedActions)
130130
})

redisinsight/ui/src/components/config/Config.tsx

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@ import {
1717
} from 'uiSrc/slices/user/user-settings'
1818
import {
1919
fetchServerInfo,
20-
appAnalyticsInfoSelector,
2120
appServerInfoSelector,
22-
setAnalyticsIdentified,
2321
} from 'uiSrc/slices/app/info'
2422

25-
import { getTelemetryService } from 'uiSrc/telemetry'
26-
import { checkIsAnalyticsGranted } from 'uiSrc/telemetry/checkAnalytics'
2723
import { setFavicon, isDifferentConsentsExists } from 'uiSrc/utils'
2824
import { fetchUnsupportedCliCommandsAction } from 'uiSrc/slices/cli/cli-settings'
2925
import { fetchRedisCommandsInfo } from 'uiSrc/slices/app/redis-commands'
@@ -39,8 +35,6 @@ const SETTINGS_PAGE_PATH = '/settings'
3935
const Config = () => {
4036
const serverInfo = useSelector(appServerInfoSelector)
4137
const { config, spec } = useSelector(userSettingsSelector)
42-
const { segmentWriteKey } = useSelector(appAnalyticsInfoSelector)
43-
4438
const { pathname } = useLocation()
4539

4640
const dispatch = useDispatch()
@@ -73,15 +67,6 @@ const Config = () => {
7367
}, [spec])
7468

7569
useEffect(() => {
76-
if (serverInfo && checkIsAnalyticsGranted()) {
77-
(async () => {
78-
const telemetryService = getTelemetryService(segmentWriteKey)
79-
await telemetryService.identify({ installationId: serverInfo.id, sessionId: serverInfo.sessionId })
80-
81-
dispatch(setAnalyticsIdentified(true))
82-
})()
83-
}
84-
8570
featuresHighlight()
8671
onboardUsers()
8772
}, [serverInfo, config])

redisinsight/ui/src/constants/api.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ enum ApiEndpoints {
132132
CLOUD_ME_AUTODISCOVERY_GET_DATABASES = 'cloud/me/autodiscovery/get-databases',
133133
CLOUD_ME_AUTODISCOVERY_DATABASES = 'cloud/me/autodiscovery/databases',
134134
CLOUD_CAPI_KEYS = 'cloud/me/capi-keys',
135+
136+
ANALYTICS_SEND_EVENT = 'analytics/send-event',
137+
ANALYTICS_SEND_PAGE = 'analytics/send-page',
135138
}
136139

137140
export enum CustomHeaders {

redisinsight/ui/src/electron/components/ConfigElectron/ConfigElectron.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect } from 'react'
22
import { useDispatch, useSelector } from 'react-redux'
33
import {
4-
appAnalyticsInfoSelector,
54
appServerInfoSelector,
65
appElectronInfoSelector
76
} from 'uiSrc/slices/app/info'
@@ -10,7 +9,6 @@ import { ipcDeleteDownloadedVersion } from 'uiSrc/electron/utils/ipcDeleteStoreV
109

1110
const ConfigElectron = () => {
1211
let isCheckedUpdates = false
13-
const { identified: analyticsIdentified } = useSelector(appAnalyticsInfoSelector)
1412
const { isReleaseNotesViewed } = useSelector(appElectronInfoSelector)
1513
const serverInfo = useSelector(appServerInfoSelector)
1614

@@ -23,11 +21,11 @@ const ConfigElectron = () => {
2321
}, [serverInfo])
2422

2523
useEffect(() => {
26-
if (!isCheckedUpdates && serverInfo && analyticsIdentified) {
24+
if (!isCheckedUpdates && serverInfo) {
2725
ipcSendEvents(serverInfo)
2826
isCheckedUpdates = true
2927
}
30-
}, [serverInfo, analyticsIdentified])
28+
}, [serverInfo])
3129

3230
useEffect(() => {
3331
if (isReleaseNotesViewed) {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { DefaultBodyType, MockedRequest, RestHandler } from 'msw'
22

33
import info from './infoHandlers'
4+
import telemetry from './telemetryHandlers'
45

5-
const handlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [].concat(info)
6+
const handlers: RestHandler<MockedRequest<DefaultBodyType>>[] = [].concat(info, telemetry)
67
export default handlers
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { rest, RestHandler } from 'msw'
2+
import { ApiEndpoints } from 'uiSrc/constants'
3+
import { getMswURL } from 'uiSrc/utils/test-utils'
4+
5+
const handlers: RestHandler[] = [
6+
// sendEventTelemetry
7+
rest.post(getMswURL(ApiEndpoints.ANALYTICS_SEND_EVENT), async (req, res, ctx) => res(
8+
ctx.status(200),
9+
)),
10+
// sendPageViewTelemetry
11+
rest.post(getMswURL(ApiEndpoints.ANALYTICS_SEND_PAGE), async (req, res, ctx) => res(
12+
ctx.status(200),
13+
))
14+
]
15+
16+
export default handlers

redisinsight/ui/src/pages/browser/BrowserPage.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import {
3333
setBrowserBulkActionOpen,
3434
} from 'uiSrc/slices/app/context'
3535
import { resetErrors } from 'uiSrc/slices/app/notifications'
36-
import { appAnalyticsInfoSelector } from 'uiSrc/slices/app/info'
3736
import InstanceHeader from 'uiSrc/components/instance-header'
3837
import { RedisResponseBuffer } from 'uiSrc/slices/interfaces'
3938
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
@@ -54,7 +53,6 @@ export const secondPanelId = 'keyDetails'
5453
const BrowserPage = () => {
5554
const { instanceId } = useParams<{ instanceId: string }>()
5655

57-
const { identified: analyticsIdentified } = useSelector(appAnalyticsInfoSelector)
5856
const { name: connectedInstanceName, db } = useSelector(connectedInstanceSelector)
5957
const {
6058
panelSizes,
@@ -119,10 +117,10 @@ const BrowserPage = () => {
119117
}, [selectedKey])
120118

121119
useEffect(() => {
122-
if (connectedInstanceName && !isPageViewSent && analyticsIdentified) {
120+
if (connectedInstanceName && !isPageViewSent) {
123121
sendPageView(instanceId)
124122
}
125-
}, [connectedInstanceName, isPageViewSent, analyticsIdentified])
123+
}, [connectedInstanceName, isPageViewSent])
126124

127125
const updateWindowDimensions = () => {
128126
setArePanelsCollapsed(globalThis.innerWidth < widthResponsiveSize)

redisinsight/ui/src/pages/clusterDetails/ClusterDetailsPage.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { Theme } from 'uiSrc/constants'
88
import { ThemeContext } from 'uiSrc/contexts/themeContext'
99
import { clusterDetailsSelector, fetchClusterDetailsAction } from 'uiSrc/slices/analytics/clusterDetails'
1010
import { analyticsSettingsSelector, setAnalyticsViewTab } from 'uiSrc/slices/analytics/settings'
11-
import { appAnalyticsInfoSelector } from 'uiSrc/slices/app/info'
1211
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
1312
import { AnalyticsViewTab } from 'uiSrc/slices/interfaces/analytics'
1413
import { sendPageViewTelemetry, TelemetryPageView } from 'uiSrc/telemetry'
@@ -37,7 +36,6 @@ const ClusterDetailsPage = () => {
3736
connectionType
3837
} = useSelector(connectedInstanceSelector)
3938
const { viewTab } = useSelector(analyticsSettingsSelector)
40-
const { identified: analyticsIdentified } = useSelector(appAnalyticsInfoSelector)
4139
const { loading, data } = useSelector(clusterDetailsSelector)
4240

4341
const [isPageViewSent, setIsPageViewSent] = useState(false)
@@ -100,10 +98,10 @@ const ClusterDetailsPage = () => {
10098
}, [data])
10199

102100
useEffect(() => {
103-
if (connectedInstanceName && !isPageViewSent && analyticsIdentified) {
101+
if (connectedInstanceName && !isPageViewSent) {
104102
sendPageView(instanceId)
105103
}
106-
}, [connectedInstanceName, isPageViewSent, analyticsIdentified])
104+
}, [connectedInstanceName, isPageViewSent])
107105

108106
const sendPageView = (instanceId: string) => {
109107
sendPageViewTelemetry({

redisinsight/ui/src/pages/databaseAnalysis/DatabaseAnalysisPage.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
setSelectedAnalysisId
1111
} from 'uiSrc/slices/analytics/dbAnalysis'
1212
import { analyticsSettingsSelector, setAnalyticsViewTab } from 'uiSrc/slices/analytics/settings'
13-
import { appAnalyticsInfoSelector } from 'uiSrc/slices/app/info'
1413
import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances'
1514
import { AnalyticsViewTab } from 'uiSrc/slices/interfaces/analytics'
1615
import { sendPageViewTelemetry, sendEventTelemetry, TelemetryPageView, TelemetryEvent } from 'uiSrc/telemetry'
@@ -22,7 +21,6 @@ import styles from './styles.module.scss'
2221

2322
const DatabaseAnalysisPage = () => {
2423
const { viewTab } = useSelector(analyticsSettingsSelector)
25-
const { identified: analyticsIdentified } = useSelector(appAnalyticsInfoSelector)
2624
const { loading: analysisLoading, data } = useSelector(dbAnalysisSelector)
2725
const { data: reports, selectedAnalysis } = useSelector(dbAnalysisReportsSelector)
2826
const { name: connectedInstanceName, db, provider } = useSelector(connectedInstanceSelector)
@@ -69,10 +67,10 @@ const DatabaseAnalysisPage = () => {
6967
}
7068

7169
useEffect(() => {
72-
if (connectedInstanceName && !isPageViewSent && analyticsIdentified) {
70+
if (connectedInstanceName && !isPageViewSent) {
7371
sendPageView(instanceId)
7472
}
75-
}, [connectedInstanceName, isPageViewSent, analyticsIdentified])
73+
}, [connectedInstanceName, isPageViewSent])
7674

7775
const sendPageView = (instanceId: string) => {
7876
sendPageViewTelemetry({

redisinsight/ui/src/pages/home/HomePage.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
} from 'uiSrc/slices/instances/instances'
2222
import { localStorageService } from 'uiSrc/services'
2323
import { resetDataSentinel, sentinelSelector } from 'uiSrc/slices/instances/sentinel'
24-
import { appAnalyticsInfoSelector } from 'uiSrc/slices/app/info'
2524
import { fetchContentAction as fetchCreateRedisButtonsAction } from 'uiSrc/slices/content/create-redis-buttons'
2625
import { sendEventTelemetry, sendPageViewTelemetry, TelemetryEvent, TelemetryPageView } from 'uiSrc/telemetry'
2726
import AddDatabaseContainer, { AddDbType } from './components/AddDatabases/AddDatabasesContainer'
@@ -61,8 +60,6 @@ const HomePage = () => {
6160
data: editedInstance,
6261
} = useSelector(editedInstanceSelector)
6362

64-
const { identified: analyticsIdentified } = useSelector(appAnalyticsInfoSelector)
65-
6663
const { contextInstanceId } = useSelector(appContextSelector)
6764

6865
!welcomeIsShow && setTitle('My Redis databases')
@@ -97,13 +94,13 @@ const HomePage = () => {
9794
}, [isChangedInstance])
9895

9996
useEffect(() => {
100-
if (!isPageViewSent && !isChangedInstance && instances.length && analyticsIdentified) {
97+
if (!isPageViewSent && !isChangedInstance && instances.length) {
10198
setIsPageViewSent(true)
10299
sendPageViewTelemetry({
103100
name: TelemetryPageView.DATABASES_LIST_PAGE
104101
})
105102
}
106-
}, [instances, analyticsIdentified, isPageViewSent, isChangedInstance])
103+
}, [instances, isPageViewSent, isChangedInstance])
107104

108105
useEffect(() => {
109106
if (clusterCredentials || cloudCredentials || sentinelInstance) {

0 commit comments

Comments
 (0)