From a6b57c8f584451bef7ee516dfc025f66fa6ef4f7 Mon Sep 17 00:00:00 2001 From: zalenskiSofteq Date: Wed, 27 Sep 2023 15:46:14 +0200 Subject: [PATCH] * #RI-4983 - [Regression] Events are sent if Analytics is turned off * #RI-4991 - [Regression] Navigate to the page from url if user connects to existing db * #RI-4993 - [Regression] Cancel button is not visible with white theme --- .../infinite-messages/InfiniteMessages.tsx | 2 ++ .../notifications/styles.module.scss | 4 +++ .../ui/src/slices/instances/instances.ts | 31 ++++++++++++------- .../ui/src/telemetry/checkAnalytics.ts | 6 ++++ .../ui/src/telemetry/telemetryUtils.ts | 9 ++++++ 5 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 redisinsight/ui/src/telemetry/checkAnalytics.ts diff --git a/redisinsight/ui/src/components/notifications/components/infinite-messages/InfiniteMessages.tsx b/redisinsight/ui/src/components/notifications/components/infinite-messages/InfiniteMessages.tsx index 81ae414c9c..7ca086c1b4 100644 --- a/redisinsight/ui/src/components/notifications/components/infinite-messages/InfiniteMessages.tsx +++ b/redisinsight/ui/src/components/notifications/components/infinite-messages/InfiniteMessages.tsx @@ -104,6 +104,7 @@ export const INFINITE_MESSAGES = { onClose?.()} data-testid="cancel-import-db-sso-btn" > @@ -144,6 +145,7 @@ export const INFINITE_MESSAGES = { onClose?.()} data-testid="cancel-create-subscription-sso-btn" > diff --git a/redisinsight/ui/src/components/notifications/styles.module.scss b/redisinsight/ui/src/components/notifications/styles.module.scss index cb120c5889..6f6b4ba39e 100644 --- a/redisinsight/ui/src/components/notifications/styles.module.scss +++ b/redisinsight/ui/src/components/notifications/styles.module.scss @@ -62,5 +62,9 @@ margin-right: 8px; margin-top: 2px; } + + .infiniteMessage__btn .euiButton__text { + color: var(--euiColorSecondaryText) !important; + } } } diff --git a/redisinsight/ui/src/slices/instances/instances.ts b/redisinsight/ui/src/slices/instances/instances.ts index 728ef32957..b159c20170 100644 --- a/redisinsight/ui/src/slices/instances/instances.ts +++ b/redisinsight/ui/src/slices/instances/instances.ts @@ -436,17 +436,26 @@ function autoCreateAndConnectToInstanceActionSuccess( onSuccess?: (id: string) => void, onFail?: () => void, ) { - return async (dispatch: AppDispatch) => { - dispatch(setAppContextInitialState()) - dispatch(setConnectedInstanceId(id ?? '')) - - dispatch(checkConnectToInstanceAction(id, (id) => { - setTimeout(() => { - dispatch(removeInfiniteNotification(InfiniteMessagesIds.autoCreateDb)) - dispatch(addMessageNotification(message)) - onSuccess?.(id) - }, HIDE_CREATING_DB_DELAY_MS) - }, onFail)) + return async (dispatch: AppDispatch, stateInit: () => RootState) => { + try { + const state = stateInit() + const isConnectedId = state.app?.context?.contextInstanceId === id + if (!isConnectedId) { + dispatch(setAppContextInitialState()) + dispatch(setConnectedInstanceId(id ?? '')) + } + dispatch(checkConnectToInstanceAction(id, (id) => { + setTimeout(() => { + dispatch(removeInfiniteNotification(InfiniteMessagesIds.autoCreateDb)) + dispatch(addMessageNotification(message)) + onSuccess?.(id) + }, HIDE_CREATING_DB_DELAY_MS) + }, + onFail, + !isConnectedId)) + } catch (error) { + // process error if needed + } } } diff --git a/redisinsight/ui/src/telemetry/checkAnalytics.ts b/redisinsight/ui/src/telemetry/checkAnalytics.ts new file mode 100644 index 0000000000..114a734d10 --- /dev/null +++ b/redisinsight/ui/src/telemetry/checkAnalytics.ts @@ -0,0 +1,6 @@ +import { get } from 'lodash' +import { store } from 'uiSrc/slices/store' + +// Check is user give access to collect his events +export const checkIsAnalyticsGranted = (): boolean => + !!get(store.getState(), 'user.settings.config.agreements.analytics', false) diff --git a/redisinsight/ui/src/telemetry/telemetryUtils.ts b/redisinsight/ui/src/telemetry/telemetryUtils.ts index c81cd15533..dd8a959777 100644 --- a/redisinsight/ui/src/telemetry/telemetryUtils.ts +++ b/redisinsight/ui/src/telemetry/telemetryUtils.ts @@ -17,9 +17,14 @@ import { RedisModules, } from './interfaces' import { TelemetryEvent } from './events' +import { checkIsAnalyticsGranted } from './checkAnalytics' const sendEventTelemetry = async ({ event, eventData = {} }: ITelemetrySendEvent) => { try { + const isAnalyticsGranted = checkIsAnalyticsGranted() + if (!isAnalyticsGranted) { + return + } await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_EVENT}`, { event, eventData }) } catch (e) { // continue regardless of error @@ -28,6 +33,10 @@ const sendEventTelemetry = async ({ event, eventData = {} }: ITelemetrySendEvent const sendPageViewTelemetry = async ({ name }: ITelemetrySendPageView) => { try { + const isAnalyticsGranted = checkIsAnalyticsGranted() + if (!isAnalyticsGranted) { + return + } await apiService.post(`${ApiEndpoints.ANALYTICS_SEND_PAGE}`, { event: name }) } catch (e) { // continue regardless of error