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 ( +{stack.Name}
+ID: {stack.Id}
+Keine Stacks gefunden.
} +