From 5c20088088c08fa0308669d0a053090282a18219 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 25 Sep 2025 06:47:50 +0000 Subject: [PATCH] Update --- frontend/src/Stacks.jsx.bak | 109 ++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/frontend/src/Stacks.jsx.bak b/frontend/src/Stacks.jsx.bak index e69de29..9560ebd 100644 --- a/frontend/src/Stacks.jsx.bak +++ b/frontend/src/Stacks.jsx.bak @@ -0,0 +1,109 @@ +import React, { useEffect, useState } from "react"; +import axios from "axios"; +import { io } from "socket.io-client"; + +export default function Stacks() { + const [stacks, setStacks] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + const [redeploying, setRedeploying] = useState({}); + + // WebSocket initialisieren + useEffect(() => { + const socket = io("/"); + console.log("Socket connected"); + + socket.on("redeployStatus", async ({ stackId, status }) => { + setRedeploying(prev => ({ ...prev, [stackId]: status })); + + // Wenn Redeploy beendet, Stack-Status neu laden + if (!status) { + try { + const res = await axios.get("/api/stacks"); + const sortedStacks = res.data.sort((a, b) => a.Name.localeCompare(b.Name)); + setStacks(sortedStacks); + } catch (err) { + console.error("Fehler beim Aktualisieren des Status nach Redeploy:", err); + } + } + }); + + return () => socket.disconnect(); + }, []); + + // Stacks initial laden + const fetchStacks = async () => { + try { + const res = await axios.get("/api/stacks"); + const sortedStacks = res.data.sort((a, b) => a.Name.localeCompare(b.Name)); + setStacks(sortedStacks); + } catch (err) { + console.error("❌ Fehler beim Abrufen der Stacks:", err); + setError("Fehler beim Laden der Stacks"); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchStacks(); + }, []); + + // Redeploy eines Stacks + const handleRedeploy = async (stackId) => { + setRedeploying(prev => ({ ...prev, [stackId]: true })); + + try { + await axios.put(`/api/stacks/${stackId}/redeploy`); + } catch (err) { + console.error("❌ Fehler beim Redeploy:", err); + setRedeploying(prev => ({ ...prev, [stackId]: false })); + } + }; + + if (loading) return

Lade Stacks...

; + if (error) return

{error}

; + + return ( +
+ {stacks.map(stack => { + const isRedeploying = redeploying[stack.Id] || false; + const isUpToDate = stack.updateStatus === "✅"; + + return ( +
+
+ {/* Status Indicator */} +
+
+
+

{stack.Name}

+

ID: {stack.Id}

+
+
+ + {!isUpToDate && ( + + )} +
+ ); + })} + {stacks.length === 0 &&

Keine Stacks gefunden.

} +
+ ); +}