mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-06 01:15:28 +02:00
feat: track add and remove dependencies (#5041)
This commit is contained in:
parent
6c21ed5f74
commit
092ba2a625
@ -12,6 +12,7 @@ import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useCh
|
|||||||
import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests';
|
import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||||
|
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
||||||
|
|
||||||
interface IAddDependencyDialogueProps {
|
interface IAddDependencyDialogueProps {
|
||||||
project: string;
|
project: string;
|
||||||
@ -64,6 +65,7 @@ const useManageDependency = (
|
|||||||
parent: string,
|
parent: string,
|
||||||
onClose: () => void,
|
onClose: () => void,
|
||||||
) => {
|
) => {
|
||||||
|
const { trackEvent } = usePlausibleTracker();
|
||||||
const { addChange } = useChangeRequestApi();
|
const { addChange } = useChangeRequestApi();
|
||||||
const { refetch: refetchChangeRequests } =
|
const { refetch: refetchChangeRequests } =
|
||||||
usePendingChangeRequests(project);
|
usePendingChangeRequests(project);
|
||||||
@ -90,6 +92,11 @@ const useManageDependency = (
|
|||||||
payload: { feature: parent },
|
payload: { feature: parent },
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType: 'dependency added',
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (actionType === 'deleteDependency') {
|
if (actionType === 'deleteDependency') {
|
||||||
await addChange(project, environment, [
|
await addChange(project, environment, [
|
||||||
@ -110,16 +117,34 @@ const useManageDependency = (
|
|||||||
const manageDependency = async () => {
|
const manageDependency = async () => {
|
||||||
try {
|
try {
|
||||||
if (isChangeRequestConfiguredInAnyEnv()) {
|
if (isChangeRequestConfiguredInAnyEnv()) {
|
||||||
await handleAddChange(
|
const actionType =
|
||||||
parent === REMOVE_DEPENDENCY_OPTION.key
|
parent === REMOVE_DEPENDENCY_OPTION.key
|
||||||
? 'deleteDependency'
|
? 'deleteDependency'
|
||||||
: 'addDependency',
|
: 'addDependency';
|
||||||
);
|
await handleAddChange(actionType);
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType:
|
||||||
|
actionType === 'addDependency'
|
||||||
|
? 'add dependency added to change request'
|
||||||
|
: 'delete dependency added to change request',
|
||||||
|
},
|
||||||
|
});
|
||||||
} else if (parent === REMOVE_DEPENDENCY_OPTION.key) {
|
} else if (parent === REMOVE_DEPENDENCY_OPTION.key) {
|
||||||
await removeDependencies(featureId);
|
await removeDependencies(featureId);
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType: 'dependency removed',
|
||||||
|
},
|
||||||
|
});
|
||||||
setToastData({ title: 'Dependency removed', type: 'success' });
|
setToastData({ title: 'Dependency removed', type: 'success' });
|
||||||
} else {
|
} else {
|
||||||
await addDependency(featureId, { feature: parent });
|
await addDependency(featureId, { feature: parent });
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType: 'dependency added',
|
||||||
|
},
|
||||||
|
});
|
||||||
setToastData({ title: 'Dependency added', type: 'success' });
|
setToastData({ title: 'Dependency added', type: 'success' });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -16,8 +16,10 @@ import useToast from 'hooks/useToast';
|
|||||||
import { useHighestPermissionChangeRequestEnvironment } from 'hooks/useHighestPermissionChangeRequestEnvironment';
|
import { useHighestPermissionChangeRequestEnvironment } from 'hooks/useHighestPermissionChangeRequestEnvironment';
|
||||||
import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled';
|
import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled';
|
||||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||||
|
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
||||||
|
|
||||||
const useDeleteDependency = (project: string, featureId: string) => {
|
const useDeleteDependency = (project: string, featureId: string) => {
|
||||||
|
const { trackEvent } = usePlausibleTracker();
|
||||||
const { addChange } = useChangeRequestApi();
|
const { addChange } = useChangeRequestApi();
|
||||||
const { refetch: refetchChangeRequests } =
|
const { refetch: refetchChangeRequests } =
|
||||||
usePendingChangeRequests(project);
|
usePendingChangeRequests(project);
|
||||||
@ -46,6 +48,11 @@ const useDeleteDependency = (project: string, featureId: string) => {
|
|||||||
try {
|
try {
|
||||||
if (isChangeRequestConfiguredInAnyEnv()) {
|
if (isChangeRequestConfiguredInAnyEnv()) {
|
||||||
await handleAddChange();
|
await handleAddChange();
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType: 'delete dependency added to change request',
|
||||||
|
},
|
||||||
|
});
|
||||||
setToastData({
|
setToastData({
|
||||||
text: `${featureId} dependency will be removed`,
|
text: `${featureId} dependency will be removed`,
|
||||||
type: 'success',
|
type: 'success',
|
||||||
@ -54,6 +61,11 @@ const useDeleteDependency = (project: string, featureId: string) => {
|
|||||||
await refetchChangeRequests();
|
await refetchChangeRequests();
|
||||||
} else {
|
} else {
|
||||||
await removeDependencies(featureId);
|
await removeDependencies(featureId);
|
||||||
|
trackEvent('dependent_features', {
|
||||||
|
props: {
|
||||||
|
eventType: 'dependency removed',
|
||||||
|
},
|
||||||
|
});
|
||||||
setToastData({ title: 'Dependency removed', type: 'success' });
|
setToastData({ title: 'Dependency removed', type: 'success' });
|
||||||
await refetchFeature();
|
await refetchFeature();
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,8 @@ export type CustomEvents =
|
|||||||
| 'project-metrics'
|
| 'project-metrics'
|
||||||
| 'open-integration'
|
| 'open-integration'
|
||||||
| 'feature-naming-pattern'
|
| 'feature-naming-pattern'
|
||||||
| 'project-mode';
|
| 'project-mode'
|
||||||
|
| 'dependent_features';
|
||||||
|
|
||||||
export const usePlausibleTracker = () => {
|
export const usePlausibleTracker = () => {
|
||||||
const plausible = useContext(PlausibleContext);
|
const plausible = useContext(PlausibleContext);
|
||||||
|
Loading…
Reference in New Issue
Block a user