diff --git a/Client/src/Pages/Monitors/Home/actionsMenu.jsx b/Client/src/Pages/Monitors/Home/actionsMenu.jsx
index abb1af243..d2ccc0b88 100644
--- a/Client/src/Pages/Monitors/Home/actionsMenu.jsx
+++ b/Client/src/Pages/Monitors/Home/actionsMenu.jsx
@@ -3,6 +3,7 @@ import { useSelector, useDispatch } from "react-redux";
import { useTheme } from "@emotion/react";
import { useNavigate } from "react-router-dom";
import { createToast } from "../../../Utils/toastUtils";
+import { logger } from "../../../Utils/Logger";
import {
Button,
IconButton,
@@ -14,6 +15,7 @@ import {
} from "@mui/material";
import {
deleteUptimeMonitor,
+ pauseUptimeMonitor,
getUptimeMonitorsByTeamId,
} from "../../../Features/UptimeMonitors/uptimeMonitorsSlice";
import Settings from "../../../assets/icons/settings-bold.svg?react";
@@ -26,6 +28,8 @@ const ActionsMenu = ({ monitor, isAdmin, updateCallback }) => {
const dispatch = useDispatch();
const theme = useTheme();
const authState = useSelector((state) => state.auth);
+ const authToken = authState.authToken;
+
const handleRemove = async (event) => {
event.preventDefault();
@@ -44,6 +48,24 @@ const ActionsMenu = ({ monitor, isAdmin, updateCallback }) => {
}
};
+ const handlePause = async () => {
+ try {
+ const action = await dispatch(
+ pauseUptimeMonitor({ authToken, monitorId: monitor._id })
+ );
+ if (pauseUptimeMonitor.fulfilled.match(action)) {
+ updateCallback();
+ const state = action?.payload?.data.isActive === false ? "paused" : "resumed";
+ createToast({ body: `Monitor ${state} successfully.` });
+ } else {
+ throw new Error(action?.error?.message ?? "Failed to pause monitor.");
+ }
+ } catch (error) {
+ logger.error("Error pausing monitor:", monitor._id, error);
+ createToast({ body: "Failed to pause monitor." });
+ }
+ };
+
const openMenu = (event, id, url) => {
event.preventDefault();
event.stopPropagation();
@@ -155,6 +177,17 @@ const ActionsMenu = ({ monitor, isAdmin, updateCallback }) => {
Clone
)}
+ {isAdmin && (
+
+ )}
{isAdmin && (
- )}
+ )}