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:
parent
e7b757d7e1
commit
924325f623
@ -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}
|
||||
|
@ -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,
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue
Block a user