diff --git a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx index 325f529251..ec4daf26ee 100644 --- a/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx +++ b/frontend/src/component/common/FeatureArchiveDialog/FeatureArchiveDialog.tsx @@ -4,6 +4,7 @@ import useFeatureApi from 'hooks/api/actions/useFeatureApi/useFeatureApi'; import useToast from 'hooks/useToast'; import { formatUnknownError } from 'utils/formatUnknownError'; import { ConditionallyRender } from '../ConditionallyRender/ConditionallyRender'; +import useProjectApi from 'hooks/api/actions/useProjectApi/useProjectApi'; interface IFeatureArchiveDialogProps { isOpen: boolean; @@ -21,6 +22,7 @@ export const FeatureArchiveDialog: VFC = ({ featureIds, }) => { const { archiveFeatureToggle } = useFeatureApi(); + const { archiveFeatures } = useProjectApi(); const { setToastData, setToastApiError } = useToast(); const isBulkArchive = featureIds?.length > 1; @@ -42,12 +44,7 @@ export const FeatureArchiveDialog: VFC = ({ const archiveToggles = async () => { try { - // TODO: bulk archive - await Promise.allSettled( - featureIds.map(id => { - archiveFeatureToggle(projectId, id); - }) - ); + await archiveFeatures(projectId, featureIds); setToastData({ text: 'Selected feature toggles have been archived', type: 'success', diff --git a/frontend/src/hooks/api/actions/useProjectApi/useProjectApi.ts b/frontend/src/hooks/api/actions/useProjectApi/useProjectApi.ts index 2f64d621ea..1c84fa4378 100644 --- a/frontend/src/hooks/api/actions/useProjectApi/useProjectApi.ts +++ b/frontend/src/hooks/api/actions/useProjectApi/useProjectApi.ts @@ -202,6 +202,16 @@ const useProjectApi = () => { return makeRequest(req.caller, req.id); }; + const archiveFeatures = async (projectId: string, featureIds: string[]) => { + const path = `api/admin/projects/${projectId}/archive`; + const req = createRequest(path, { + method: 'POST', + body: JSON.stringify({ features: featureIds }), + }); + + return makeRequest(req.caller, req.id); + }; + return { createProject, validateId, @@ -214,6 +224,7 @@ const useProjectApi = () => { removeGroupFromRole, changeUserRole, changeGroupRole, + archiveFeatures, errors, loading, searchProjectUser, diff --git a/src/server-dev.ts b/src/server-dev.ts index 6bd1433b4f..9e85e8b637 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -44,7 +44,6 @@ process.nextTick(async () => { projectStatusApi: true, showProjectApiAccess: true, projectScopedSegments: true, - bulkOperations: true, projectScopedStickiness: true, }, },