From ea4c0a0941c4c24036abbb673b606d03e4d5a904 Mon Sep 17 00:00:00 2001 From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:24:48 +0200 Subject: [PATCH] feat: handle global impact metrics in frontend api hook (#10626) --- .../useImpactMetricsApi.ts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/frontend/src/hooks/api/actions/useImpactMetricsSettingsApi/useImpactMetricsApi.ts b/frontend/src/hooks/api/actions/useImpactMetricsSettingsApi/useImpactMetricsApi.ts index da8eb623be..5bbe66b408 100644 --- a/frontend/src/hooks/api/actions/useImpactMetricsSettingsApi/useImpactMetricsApi.ts +++ b/frontend/src/hooks/api/actions/useImpactMetricsSettingsApi/useImpactMetricsApi.ts @@ -2,19 +2,26 @@ import { useCallback } from 'react'; import useAPI from '../useApi/useApi.js'; import type { CreateImpactMetricsConfigSchema } from 'openapi'; -export const useImpactMetricsApi = ({ - projectId, - featureName, -}: { projectId: string; featureName: string }) => { +type UseImpactMetricsApiParams = + | { + projectId: string; + featureName: string; + } + | undefined; + +export const useImpactMetricsApi = (params: UseImpactMetricsApiParams) => { + const basePath = params + ? `api/admin/projects/${params.projectId}/features/${params.featureName}/impact-metrics/config` + : `api/admin/impact-metrics/config`; + const { makeRequest, createRequest, errors, loading } = useAPI({ propagateErrors: true, }); const createImpactMetric = useCallback( async (config: CreateImpactMetricsConfigSchema) => { - const path = `api/admin/projects/${projectId}/features/${featureName}/impact-metrics/config`; const req = createRequest( - path, + basePath, { method: 'POST', body: JSON.stringify(config), @@ -29,9 +36,8 @@ export const useImpactMetricsApi = ({ const deleteImpactMetric = useCallback( async (metricId: string) => { - const path = `api/admin/projects/${projectId}/features/${featureName}/impact-metrics/config/${metricId}`; const req = createRequest( - path, + `${basePath}/${metricId}`, { method: 'DELETE', },