1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-19 17:52:45 +02:00

feat: make impact metrics config save call (#10576)

This commit is contained in:
Mateusz Kwasniewski 2025-08-29 11:26:11 +02:00 committed by GitHub
parent e7b757d7e1
commit 924325f623
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 3 deletions

View File

@ -3,8 +3,10 @@ import { PageHeader } from '../../../common/PageHeader/PageHeader.tsx';
import { Button, styled, Typography } from '@mui/material';
import Add from '@mui/icons-material/Add';
import { useImpactMetricsMetadata } from 'hooks/api/getters/useImpactMetricsMetadata/useImpactMetricsMetadata.ts';
import { useMemo, useState } from 'react';
import { type FC, useMemo, useState } from 'react';
import { ChartConfigModal } from '../../../impact-metrics/ChartConfigModal/ChartConfigModal.tsx';
import { useImpactMetricsApi } from 'hooks/api/actions/useImpactMetricsSettingsApi/useImpactMetricsApi.ts';
import { useRequiredPathParam } from 'hooks/useRequiredPathParam.ts';
const StyledHeaderTitle = styled(Typography)(({ theme }) => ({
fontSize: theme.fontSizes.mainHeader,
@ -12,8 +14,10 @@ const StyledHeaderTitle = styled(Typography)(({ theme }) => ({
lineHeight: theme.spacing(5),
}));
export const FeatureImpactMetrics = () => {
export const FeatureImpactMetrics: FC = () => {
const feature = useRequiredPathParam('featureId');
const [modalOpen, setModalOpen] = useState(false);
const { createImpactMetric } = useImpactMetricsApi();
const {
metadata,
@ -56,7 +60,7 @@ export const FeatureImpactMetrics = () => {
<ChartConfigModal
open={modalOpen}
onClose={() => setModalOpen(false)}
onSave={() => {}}
onSave={(data) => createImpactMetric({ ...data, feature })}
initialConfig={undefined}
metricSeries={metricSeries}
loading={metadataLoading}

View File

@ -0,0 +1,32 @@
import { useCallback } from 'react';
import useAPI from '../useApi/useApi.js';
import type { ImpactMetricsConfigSchema } from 'openapi/models/impactMetricsConfigSchema.js';
export const useImpactMetricsApi = () => {
const { makeRequest, createRequest, errors, loading } = useAPI({
propagateErrors: true,
});
const createImpactMetric = useCallback(
async (config: ImpactMetricsConfigSchema) => {
const path = `api/admin/impact-metrics/config`;
const req = createRequest(
path,
{
method: 'POST',
body: JSON.stringify(config),
},
'updateImpactMetric',
);
return makeRequest(req.caller, req.id);
},
[makeRequest, createRequest],
);
return {
createImpactMetric,
errors,
loading,
};
};