From edaa4e87544eb543e9c84f9a7182ea5e59adcb34 Mon Sep 17 00:00:00 2001 From: Cesar N <11819101+cesnietor@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:49:03 -0800 Subject: [PATCH] Use swagger api for delete group (#3196) --- .../screens/Console/Groups/DeleteGroup.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/web-app/src/screens/Console/Groups/DeleteGroup.tsx b/web-app/src/screens/Console/Groups/DeleteGroup.tsx index ee5ace25e..1f937a6e3 100644 --- a/web-app/src/screens/Console/Groups/DeleteGroup.tsx +++ b/web-app/src/screens/Console/Groups/DeleteGroup.tsx @@ -14,14 +14,15 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import React, { Fragment } from "react"; -import { ErrorResponseHandler } from "../../../common/types"; +import React, { Fragment, useState } from "react"; import { ConfirmDeleteIcon } from "mds"; import { encodeURLString } from "../../../common/utils"; import { setErrorSnackMessage } from "../../../systemSlice"; import { useAppDispatch } from "../../../store"; import ConfirmDialog from "../Common/ModalWrapper/ConfirmDialog"; -import useApi from "../Common/Hooks/useApi"; +import { api } from "api"; +import { errorToHandler } from "api/errors"; +import { ApiError, HttpResponse } from "api/consoleApi"; interface IDeleteGroup { selectedGroups: string[]; @@ -35,21 +36,26 @@ const DeleteGroup = ({ closeDeleteModalAndRefresh, }: IDeleteGroup) => { const dispatch = useAppDispatch(); - const onDelSuccess = () => closeDeleteModalAndRefresh(true); - const onDelError = (err: ErrorResponseHandler) => { - dispatch(setErrorSnackMessage(err)); - closeDeleteModalAndRefresh(false); - }; const onClose = () => closeDeleteModalAndRefresh(false); - - const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError); + const [loadingDelete, setLoadingDelete] = useState(false); if (!selectedGroups) { return null; } const onDeleteGroups = () => { for (let group of selectedGroups) { - invokeDeleteApi("DELETE", `/api/v1/group/${encodeURLString(group)}`); + setLoadingDelete(true); + api.group + .removeGroup(encodeURLString(group)) + .then((_) => { + closeDeleteModalAndRefresh(true); + }) + .catch(async (res: HttpResponse) => { + const err = (await res.json()) as ApiError; + dispatch(setErrorSnackMessage(errorToHandler(err))); + closeDeleteModalAndRefresh(false); + }) + .finally(() => setLoadingDelete(false)); } }; @@ -65,7 +71,7 @@ const DeleteGroup = ({ confirmText={"Delete"} isOpen={deleteOpen} titleIcon={} - isLoading={deleteLoading} + isLoading={loadingDelete} onConfirm={onDeleteGroups} onClose={onClose} confirmationContent={