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:
parent
abe160eb7d
commit
1523e2d056
@ -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' });
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user