import React, { useState, useEffect } from "react"; import { Server, Activity } from "lucide-react"; import { ClusterList } from "@/components/Kubernetes/ClusterList"; import { PortForwardList } from "@/components/Kubernetes/PortForwardList"; import { AddClusterModal } from "@/components/Kubernetes/AddClusterModal"; import { PortForwardForm } from "@/components/Kubernetes/PortForwardForm"; import type { ClusterInfo, PortForwardResponse } from "@/lib/tauriCommands"; import { listClustersCmd, removeClusterCmd, listPortForwardsCmd, stopPortForwardCmd, } from "@/lib/tauriCommands"; export function KubernetesPage() { const [clusters, setClusters] = useState([]); const [portForwards, setPortForwards] = useState([]); const [isLoading, setIsLoading] = useState(true); const [isAddClusterOpen, setIsAddClusterOpen] = useState(false); const [isStartPortForwardOpen, setIsStartPortForwardOpen] = useState(false); useEffect(() => { loadData(); }, []); const loadData = async () => { setIsLoading(true); try { const [clustersData, portForwardsData] = await Promise.all([ listClustersCmd(), listPortForwardsCmd(), ]); setClusters(clustersData); setPortForwards(portForwardsData); } catch (err) { console.error("Failed to load data:", err); } finally { setIsLoading(false); } }; const handleRemoveCluster = async (clusterId: string) => { try { await removeClusterCmd(clusterId); setClusters((prev) => prev.filter((c) => c.id !== clusterId)); } catch (err) { console.error("Failed to remove cluster:", err); alert("Failed to remove cluster"); } }; const handleStopPortForward = async (id: string) => { try { await stopPortForwardCmd(id); setPortForwards((prev) => prev.filter((pf) => pf.id !== id)); } catch (err) { console.error("Failed to stop port forward:", err); alert("Failed to stop port forward"); } }; const handleAddCluster = (cluster: ClusterInfo) => { setClusters((prev) => [...prev, cluster]); }; const handleStartPortForward = (portForward: PortForwardResponse) => { setPortForwards((prev) => [...prev, portForward]); }; if (isLoading) { return (

Loading Kubernetes resources...

); } return (

Kubernetes Management

Manage your Kubernetes clusters and port forwarding sessions

setIsAddClusterOpen(true)} onRemove={handleRemoveCluster} /> setIsStartPortForwardOpen(true)} onStop={handleStopPortForward} />
setIsAddClusterOpen(false)} onAdd={handleAddCluster} /> setIsStartPortForwardOpen(false)} onStart={handleStartPortForward} />
); }