Use swagger api for delete Policy (#3198)

This commit is contained in:
Cesar N
2024-01-17 12:06:03 -08:00
committed by GitHub
parent edaa4e8754
commit 462cf16db9

View File

@@ -14,14 +14,15 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
import React, { Fragment } from "react"; import React, { Fragment, useState } from "react";
import { ErrorResponseHandler } from "../../../common/types";
import useApi from "../Common/Hooks/useApi";
import ConfirmDialog from "../Common/ModalWrapper/ConfirmDialog"; import ConfirmDialog from "../Common/ModalWrapper/ConfirmDialog";
import { ConfirmDeleteIcon } from "mds"; import { ConfirmDeleteIcon } from "mds";
import { encodeURLString } from "../../../common/utils";
import { setErrorSnackMessage } from "../../../systemSlice"; import { setErrorSnackMessage } from "../../../systemSlice";
import { useAppDispatch } from "../../../store"; import { useAppDispatch } from "../../../store";
import { api } from "api";
import { ApiError, HttpResponse } from "api/consoleApi";
import { errorToHandler } from "api/errors";
import { encodeURLString } from "common/utils";
interface IDeletePolicyProps { interface IDeletePolicyProps {
closeDeleteModalAndRefresh: (refresh: boolean) => void; closeDeleteModalAndRefresh: (refresh: boolean) => void;
@@ -35,22 +36,27 @@ const DeletePolicy = ({
selectedPolicy, selectedPolicy,
}: IDeletePolicyProps) => { }: IDeletePolicyProps) => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const onDelSuccess = () => closeDeleteModalAndRefresh(true);
const onDelError = (err: ErrorResponseHandler) =>
dispatch(setErrorSnackMessage(err));
const onClose = () => closeDeleteModalAndRefresh(false); const onClose = () => closeDeleteModalAndRefresh(false);
const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError); const [loadingDelete, setLoadingDelete] = useState<boolean>(false);
if (!selectedPolicy) { if (!selectedPolicy) {
return null; return null;
} }
const onConfirmDelete = () => { const onConfirmDelete = () => {
invokeDeleteApi( setLoadingDelete(true);
"DELETE", api.policy
`/api/v1/policy/${encodeURLString(selectedPolicy)}`, .removePolicy(encodeURLString(selectedPolicy))
); .then((_) => {
closeDeleteModalAndRefresh(true);
})
.catch(async (res: HttpResponse<void, ApiError>) => {
const err = (await res.json()) as ApiError;
dispatch(setErrorSnackMessage(errorToHandler(err)));
closeDeleteModalAndRefresh(false);
})
.finally(() => setLoadingDelete(false));
}; };
return ( return (
@@ -59,7 +65,7 @@ const DeletePolicy = ({
confirmText={"Delete"} confirmText={"Delete"}
isOpen={deleteOpen} isOpen={deleteOpen}
titleIcon={<ConfirmDeleteIcon />} titleIcon={<ConfirmDeleteIcon />}
isLoading={deleteLoading} isLoading={loadingDelete}
onConfirm={onConfirmDelete} onConfirm={onConfirmDelete}
onClose={onClose} onClose={onClose}
confirmationContent={ confirmationContent={