From 6f3f8c0e99088024be23164c28e7c2504df67330 Mon Sep 17 00:00:00 2001 From: Hugo Kiyodi Oshiro Date: Mon, 23 Sep 2024 11:52:46 +0200 Subject: [PATCH] Plugins: Add rudderstack events to plugins update (#92989) --- .../components/InstallControls/InstallControlsButton.tsx | 6 +++++- .../features/plugins/admin/components/UpdateAllModal.tsx | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx b/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx index cbad3dee8e6..f438752afa6 100644 --- a/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx +++ b/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import { useLocation } from 'react-router-dom-v5-compat'; import { AppEvents } from '@grafana/data'; -import { config, locationService } from '@grafana/runtime'; +import { config, locationService, reportInteraction } from '@grafana/runtime'; import { Button, ConfirmModal, Stack } from '@grafana/ui'; import appEvents from 'app/core/app_events'; import configCore from 'app/core/config'; @@ -21,6 +21,8 @@ import { import { trackPluginInstalled, trackPluginUninstalled } from '../../tracking'; import { CatalogPlugin, PluginStatus, PluginTabIds, Version } from '../../types'; +const PLUGIN_UPDATE_INTERACTION_EVENT_NAME = 'plugin_update_clicked'; + type InstallControlsButtonProps = { plugin: CatalogPlugin; pluginStatus: PluginStatus; @@ -107,6 +109,8 @@ export function InstallControlsButton({ }; const onUpdate = async () => { + reportInteraction(PLUGIN_UPDATE_INTERACTION_EVENT_NAME); + await install(plugin.id, latestCompatibleVersion?.version, true); if (!errorInstalling) { appEvents.emit(AppEvents.alertSuccess, [`Updated ${plugin.name}`]); diff --git a/public/app/features/plugins/admin/components/UpdateAllModal.tsx b/public/app/features/plugins/admin/components/UpdateAllModal.tsx index 42f631fc451..6dfa1758a32 100644 --- a/public/app/features/plugins/admin/components/UpdateAllModal.tsx +++ b/public/app/features/plugins/admin/components/UpdateAllModal.tsx @@ -2,13 +2,15 @@ import { css } from '@emotion/css'; import { useEffect, useMemo, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; -import { config } from '@grafana/runtime'; +import { config, reportInteraction } from '@grafana/runtime'; import { Checkbox, ConfirmModal, EmptyState, Icon, Spinner, Tooltip, useStyles2 } from '@grafana/ui'; import { t, Trans } from 'app/core/internationalization'; import { useInstall, useInstallStatus } from '../state/hooks'; import { CatalogPlugin } from '../types'; +const PLUGINS_UPDATE_ALL_INTERACTION_EVENT_NAME = 'plugins_update_all_clicked'; + type UpdateError = { id: string; message: string; @@ -221,6 +223,8 @@ export const UpdateAllModal = ({ isOpen, onDismiss, isLoading, plugins }: Props) const onConfirm = async () => { if (!inProgress) { + reportInteraction(PLUGINS_UPDATE_ALL_INTERACTION_EVENT_NAME); + setInProgress(true); // in cloud the requests need to be sync