1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-03 01:18:43 +02:00

feat: implement call to add release-plan to feature environment (#8778)

This commit is contained in:
David Leek 2024-11-18 09:30:29 +01:00 committed by GitHub
parent 69f73f45f4
commit 0ce976a0d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 52 additions and 2 deletions

View File

@ -3,6 +3,9 @@ import StringTruncator from 'component/common/StringTruncator/StringTruncator';
import { Link, styled } from '@mui/material';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
import type { IReleasePlanTemplate } from 'interfaces/releasePlans';
import { useReleasePlansApi } from 'hooks/api/actions/useReleasePlansApi/useReleasePlansApi';
import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError';
const StyledIcon = styled('div')(({ theme }) => ({
width: theme.spacing(4),
@ -57,15 +60,31 @@ export const FeatureReleasePlanCard = ({
}: IFeatureReleasePlanCardProps) => {
const Icon = getFeatureStrategyIcon('releasePlanTemplate');
const { trackEvent } = usePlausibleTracker();
const { addReleasePlanToFeature } = useReleasePlansApi();
const { setToastApiError, setToastData } = useToast();
const addReleasePlan = async () => {
try {
await addReleasePlanToFeature(
featureId,
releasePlanTemplate.id,
projectId,
environmentId,
);
setToastData({
type: 'success',
title: 'Release plan added',
});
} catch (error: unknown) {
setToastApiError(formatUnknownError(error));
}
const addReleasePlan = () => {
trackEvent('release-plans', {
props: {
eventType: 'add',
name: releasePlanTemplate.name,
},
});
console.log('TODO: call and implement addReleasePlan');
};
return (

View File

@ -0,0 +1,31 @@
import useAPI from '../useApi/useApi';
export const useReleasePlansApi = () => {
const { makeRequest, makeLightRequest, createRequest, errors, loading } =
useAPI({
propagateErrors: true,
});
const addReleasePlanToFeature = async (
featureName: string,
releasePlanTemplateId: string,
projectId: string,
environment: string,
): Promise<void> => {
const requestId = 'createReleasePlanTemplate';
const path = `api/admin/projects/${projectId}/features/${featureName}/environments/${environment}/release_plans/${releasePlanTemplateId}`;
const req = createRequest(
path,
{
method: 'POST',
body: JSON.stringify({}),
},
requestId,
);
await makeRequest(req.caller, req.id);
};
return {
addReleasePlanToFeature,
};
};