From 0addb128bf40e6b29a91cc4720698583ae9d67da Mon Sep 17 00:00:00 2001 From: Daniel Cojocea Date: Thu, 8 Aug 2024 16:37:23 -0400 Subject: [PATCH] Added delete pagespeed thunk --- .../PageSpeedMonitor/pageSpeedMonitorSlice.js | 40 +++++++++++++++++++ .../src/Pages/PageSpeed/Configure/index.jsx | 17 +++++--- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/Client/src/Features/PageSpeedMonitor/pageSpeedMonitorSlice.js b/Client/src/Features/PageSpeedMonitor/pageSpeedMonitorSlice.js index 6524a3417..130883d4a 100644 --- a/Client/src/Features/PageSpeedMonitor/pageSpeedMonitorSlice.js +++ b/Client/src/Features/PageSpeedMonitor/pageSpeedMonitorSlice.js @@ -68,6 +68,27 @@ export const getPageSpeedByUserId = createAsyncThunk( } ); +export const deletePageSpeedMonitor = createAsyncThunk( + "monitors/deleteMonitor", + async (data, thunkApi) => { + try { + const { authToken, monitor } = data; + const res = await axiosInstance.delete(`/monitors/${monitor._id}`, { + headers: { + Authorization: `Bearer ${authToken}`, + "Content-Type": "application/json", + }, + }); + return res.data; + } catch (error) { + if (error.response && error.response.data) { + return thunkApi.rejectWithValue(error.response.data); + } + return thunkApi.rejectWithValue(error.message); + } + } +); + const pageSpeedMonitorSlice = createSlice({ name: "pageSpeedMonitor", initialState, @@ -137,6 +158,25 @@ const pageSpeedMonitorSlice = createSlice({ state.msg = action.payload ? action.payload.msg : "Failed to create page speed monitor"; + }) + + // ***************************************************** + // Delete Monitor + // ***************************************************** + .addCase(deletePageSpeedMonitor.pending, (state) => { + state.isLoading = true; + }) + .addCase(deletePageSpeedMonitor.fulfilled, (state, action) => { + state.isLoading = false; + state.success = action.payload.success; + state.msg = action.payload.msg; + }) + .addCase(deletePageSpeedMonitor.rejected, (state, action) => { + state.isLoading = false; + state.success = false; + state.msg = action.payload + ? action.payload.msg + : "Failed to delete page speed monitor"; }); }, }); diff --git a/Client/src/Pages/PageSpeed/Configure/index.jsx b/Client/src/Pages/PageSpeed/Configure/index.jsx index 4da437be1..cc3171699 100644 --- a/Client/src/Pages/PageSpeed/Configure/index.jsx +++ b/Client/src/Pages/PageSpeed/Configure/index.jsx @@ -3,6 +3,8 @@ import { useTheme } from "@emotion/react"; import { Box, Modal, Stack, Typography } from "@mui/material"; import { useDispatch, useSelector } from "react-redux"; import { useNavigate, useParams } from "react-router"; +import { deletePageSpeedMonitor } from "../../../Features/PageSpeedMonitor/pageSpeedMonitorSlice"; +import { createToast } from "../../../Utils/toastUtils"; import Button from "../../../Components/Button"; import Field from "../../../Components/Inputs/Field"; import Select from "../../../Components/Inputs/Select"; @@ -11,6 +13,7 @@ import PauseCircleOutlineIcon from "@mui/icons-material/PauseCircleOutline"; import WestRoundedIcon from "@mui/icons-material/WestRounded"; import GreenCheck from "../../../assets/icons/checkbox-green.svg?react"; import RedCheck from "../../../assets/icons/checkbox-red.svg?react"; + import "./index.css"; const PageSpeedConfigure = () => { @@ -65,12 +68,14 @@ const PageSpeedConfigure = () => { const [isOpen, setIsOpen] = useState(false); const handleRemove = async (event) => { event.preventDefault(); - // const action = await dispatch(deletePageSpeedMonitor({ authToken, monitor })); - // if (action.meta.requestStatus === "fulfilled") { - // navigate("/monitors"); - // } else { - // createToast({ body: "Failed to delete monitor." }); - // } + const action = await dispatch( + deletePageSpeedMonitor({ authToken, monitor }) + ); + if (action.meta.requestStatus === "fulfilled") { + navigate("/pagespeed"); + } else { + createToast({ body: "Failed to delete monitor." }); + } }; return (