diff --git a/packages/core/upload/admin/src/components/AssetDialog/index.js b/packages/core/upload/admin/src/components/AssetDialog/index.js index f76e3afad0..2ece995b23 100644 --- a/packages/core/upload/admin/src/components/AssetDialog/index.js +++ b/packages/core/upload/admin/src/components/AssetDialog/index.js @@ -29,6 +29,7 @@ export const AssetDialog = ({ onValidate, multiple, initiallySelectedAssets, + trackedLocation, }) => { const [assetToEdit, setAssetToEdit] = useState(undefined); const { formatMessage } = useIntl(); @@ -153,6 +154,7 @@ export const AssetDialog = ({ canUpdate={canUpdate} canCopyLink={canCopyLink} canDownload={canDownload} + trackedLocation={trackedLocation} /> ); } @@ -232,6 +234,7 @@ AssetDialog.defaultProps = { allowedTypes: [], initiallySelectedAssets: [], multiple: false, + trackedLocation: undefined, }; AssetDialog.propTypes = { @@ -241,4 +244,5 @@ AssetDialog.propTypes = { onAddAsset: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, onValidate: PropTypes.func.isRequired, + trackedLocation: PropTypes.string, }; diff --git a/packages/core/upload/admin/src/components/EditAssetDialog/ReplaceMediaButton.js b/packages/core/upload/admin/src/components/EditAssetDialog/ReplaceMediaButton.js index eb3ef2b324..4819d6b991 100644 --- a/packages/core/upload/admin/src/components/EditAssetDialog/ReplaceMediaButton.js +++ b/packages/core/upload/admin/src/components/EditAssetDialog/ReplaceMediaButton.js @@ -1,16 +1,23 @@ import PropTypes from 'prop-types'; import React, { useRef } from 'react'; import { useIntl } from 'react-intl'; +import { useTracking } from '@strapi/helper-plugin'; import { Button } from '@strapi/design-system/Button'; import { VisuallyHidden } from '@strapi/design-system/VisuallyHidden'; import { getTrad } from '../../utils'; -export const ReplaceMediaButton = ({ onSelectMedia, acceptedMime, ...props }) => { +export const ReplaceMediaButton = ({ onSelectMedia, acceptedMime, trackedLocation, ...props }) => { const { formatMessage } = useIntl(); const inputRef = useRef(null); + const { trackUsage } = useTracking(); const handleClick = e => { e.preventDefault(); + + if (trackedLocation) { + trackUsage('didReplaceMedia', { location: trackedLocation }); + } + inputRef.current.click(); }; @@ -43,7 +50,12 @@ export const ReplaceMediaButton = ({ onSelectMedia, acceptedMime, ...props }) => ); }; +ReplaceMediaButton.defaultProps = { + trackedLocation: undefined, +}; + ReplaceMediaButton.propTypes = { acceptedMime: PropTypes.string.isRequired, onSelectMedia: PropTypes.func.isRequired, + trackedLocation: PropTypes.string, }; diff --git a/packages/core/upload/admin/src/components/EditAssetDialog/index.js b/packages/core/upload/admin/src/components/EditAssetDialog/index.js index e5f4f41b27..f56f710e28 100644 --- a/packages/core/upload/admin/src/components/EditAssetDialog/index.js +++ b/packages/core/upload/admin/src/components/EditAssetDialog/index.js @@ -36,7 +36,14 @@ const fileInfoSchema = yup.object({ caption: yup.string(), }); -export const EditAssetDialog = ({ onClose, asset, canUpdate, canCopyLink, canDownload }) => { +export const EditAssetDialog = ({ + onClose, + asset, + canUpdate, + canCopyLink, + canDownload, + trackedLocation, +}) => { const { formatMessage, formatDate } = useIntl(); const submitButtonRef = useRef(null); const [isCropping, setIsCropping] = useState(false); @@ -183,6 +190,7 @@ export const EditAssetDialog = ({ onClose, asset, canUpdate, canCopyLink, canDow onSelectMedia={setReplacementFile} acceptedMime={asset.mime} disabled={formDisabled} + trackedLocation={trackedLocation} />