1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-21 13:47:39 +02:00

feat: plausible tracking for links (#9988)

This commit is contained in:
Mateusz Kwasniewski 2025-05-14 11:19:37 +02:00 committed by GitHub
parent abe160eb7d
commit 1523e2d056
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import { useFeature } from 'hooks/api/getters/useFeature/useFeature';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import type { FeatureLink } from 'interfaces/featureToggle'; import type { FeatureLink } from 'interfaces/featureToggle';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
const StyledTextField = styled(TextField)(({ theme }) => ({ const StyledTextField = styled(TextField)(({ theme }) => ({
width: '100%', width: '100%',
@ -43,6 +44,7 @@ const LinkDialogue: FC<ILinkDialogueProps> = ({
const isEditMode = mode === 'edit'; const isEditMode = mode === 'edit';
const dialogueTitle = isEditMode ? 'Edit link' : 'Add link'; const dialogueTitle = isEditMode ? 'Edit link' : 'Add link';
const successMessage = isEditMode ? 'Link updated' : 'Link added'; const successMessage = isEditMode ? 'Link updated' : 'Link added';
const { trackEvent } = usePlausibleTracker();
useEffect(() => { useEffect(() => {
if (isEditMode && link) { if (isEditMode && link) {
@ -60,8 +62,18 @@ const LinkDialogue: FC<ILinkDialogueProps> = ({
try { try {
if (isEditMode) { if (isEditMode) {
await editLink(id, { url, title: title || null }); await editLink(id, { url, title: title || null });
trackEvent('feature-links', {
props: {
eventType: 'edit-link',
},
});
} else { } else {
await addLink({ url, title: title || null }); await addLink({ url, title: title || null });
trackEvent('feature-links', {
props: {
eventType: 'add-link',
},
});
} }
setToastData({ text: successMessage, type: 'success' }); setToastData({ text: successMessage, type: 'success' });

View File

@ -1,6 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { Button, styled, TextField } from '@mui/material'; import { Button, styled, TextField } from '@mui/material';
import type { ProjectLinkTemplateSchema } from 'openapi'; import type { ProjectLinkTemplateSchema } from 'openapi';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
interface IProjectLinkTemplateEditorProps { interface IProjectLinkTemplateEditorProps {
template?: ProjectLinkTemplateSchema; template?: ProjectLinkTemplateSchema;
@ -34,6 +35,7 @@ const ProjectLinkTemplateEditor = ({
title?: string; title?: string;
url?: string; url?: string;
}>({}); }>({});
const { trackEvent } = usePlausibleTracker();
const validateTemplateForm = () => { const validateTemplateForm = () => {
const errors: { title?: string; url?: string } = {}; const errors: { title?: string; url?: string } = {};
@ -48,6 +50,11 @@ const ProjectLinkTemplateEditor = ({
const handleSave = () => { const handleSave = () => {
if (validateTemplateForm()) { if (validateTemplateForm()) {
trackEvent('feature-links', {
props: {
eventType: isAdding ? 'add-template' : 'edit-template',
},
});
onSave({ onSave({
title: templateTitle || null, title: templateTitle || null,
urlTemplate: templateUrl, urlTemplate: templateUrl,

View File

@ -73,7 +73,8 @@ export type CustomEvents =
| 'order-environments' | 'order-environments'
| 'project-navigation' | 'project-navigation'
| 'productivity-report' | 'productivity-report'
| 'release-management'; | 'release-management'
| 'feature-links';
export const usePlausibleTracker = () => { export const usePlausibleTracker = () => {
const plausible = useContext(PlausibleContext); const plausible = useContext(PlausibleContext);