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