diff --git a/web/src/app/operations/[operationId]/page.tsx b/web/src/app/operations/[operationId]/page.tsx
index 6f0763c..36f1c8a 100644
--- a/web/src/app/operations/[operationId]/page.tsx
+++ b/web/src/app/operations/[operationId]/page.tsx
@@ -1,6 +1,6 @@
 "use client";
 
-import { useEffect, useState } from "react";
+import { useEffect, useState, useRef } from "react";
 import { useParams, useRouter } from "next/navigation";
 import { CircularProgress, Typography, Card, CardContent, Button } from "@mui/material";
 import Webpage from "@/app/_components/webpage";
@@ -17,23 +17,31 @@ interface Operation {
   }
 
 export default function OperationStatusPage() {
-	const { operationId } = useParams();
 	const router = useRouter();
-	const [operation, setOperation] = useState<Operation | null>(null);
+	const { operationId } = useParams();
+
 	const [loading, setLoading] = useState(true);
 	const [error, setError] = useState<string | null>(null);
+	const [operation, setOperation] = useState<Operation | null>(null);
+
+	const intervalRef = useRef<NodeJS.Timeout | null>(null);
 
 	useEffect(() => {
 		if (!operationId) return;
-	
+
 		const fetchOperation = async () => {
 			try {
 				const response = await fetch(`/api/operations/${operationId}`);
-		
+
 				if (!response.ok) throw new Error("Failed to fetch operation");
-		
-				const data = await response.json();
+
+				const data: Operation = await response.json();
 				setOperation(data);
+
+				if (data.Status !== 0 && intervalRef.current) {
+					clearInterval(intervalRef.current);
+					intervalRef.current = null;
+				}
 			} catch (err: unknown) {
 				if (err instanceof Error) {
 					setError(err.message);
@@ -44,39 +52,34 @@ export default function OperationStatusPage() {
 				setLoading(false);
 			}
 		};
-	
+
 		fetchOperation();
-		const interval = setInterval(fetchOperation, 5000);
-	
-		return () => clearInterval(interval);
+		if (!intervalRef.current) {
+			intervalRef.current = setInterval(fetchOperation, 1000);
+		}
+
+		return () => {
+			if (intervalRef.current) {
+				clearInterval(intervalRef.current);
+			}
+		};
 	}, [operationId]);
 
-	const getStatusClass = (status: number) => {
-		switch (status) {
-		case 0:
-			return "created";
-		case 1:
-			return "completed";
-		case 2:
-			return "failed";
-		default:
-			return "";
-		}
-	};
-	
 	const getStatusText = (status: number) => {
 		switch (status) {
-		case 0:
-			return "Created";
-		case 1:
-			return "Completed";
-		case 2:
-			return "Failed";
-		default:
-			return "Unknown";
+			case 0:
+				return "Created";
+			case 1:
+				return "Completed";
+			case 2:
+				return "Failed";
+			default:
+				return "Unknown";
 		}
 	};
-	
+
+	const getStatusClass = (status: number) => getStatusText(status).toLowerCase();
+
 	return (
 		<Webpage>
 			<main className="operation-status">
@@ -96,7 +99,7 @@ export default function OperationStatusPage() {
 						<Typography>Owner: {operation.Owner}</Typography>
 						<Typography>Date: {new Date(operation.Date * 1000).toLocaleString()}</Typography>
 						<Typography>Path: {operation.Path}</Typography>
-			
+
 						{operation.Status === 1 && (
 							<div className="submission-button">
 							<Button
@@ -116,4 +119,4 @@ export default function OperationStatusPage() {
 			</main>
 		</Webpage>
 	);
-}
\ No newline at end of file
+}