import React, { useState, useEffect } from "react"; import { useKubernetesStore } from "@/stores/kubernetesStore"; 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 { ResourceBrowser } from "@/components/Kubernetes/ResourceBrowser"; import type { ClusterInfo, PortForwardResponse } from "@/lib/tauriCommands"; import { listClustersCmd, removeClusterCmd, listPortForwardsCmd, stopPortForwardCmd, deletePortForwardCmd, } from "@/lib/tauriCommands"; export function KubernetesPage() { const { clusters, addCluster, removeCluster, selectedClusterId } = useKubernetesStore(); 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(), ]); clustersData.forEach(addCluster); setPortForwards(portForwardsData); } catch (err) { console.error("Failed to load data:", err); } finally { setIsLoading(false); } }; const handleRemoveCluster = async (clusterId: string) => { try { await removeClusterCmd(clusterId); removeCluster(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 handleDeletePortForward = async (id: string) => { try { await deletePortForwardCmd(id); setPortForwards((prev) => prev.filter((pf) => pf.id !== id)); } catch (err) { console.error("Failed to delete port forward:", err); alert("Failed to delete port forward"); } }; const handleAddCluster = (cluster: ClusterInfo) => { addCluster(cluster); }; const handleStartPortForward = (portForward: PortForwardResponse) => { setPortForwards((prev) => [...prev, portForward]); }; if (isLoading) { return (

Loading Kubernetes resources...

); } return (

Kubernetes Management

Manage your Kubernetes clusters and resources

{/* Cluster Management Section */}

Clusters

setIsAddClusterOpen(true)} onRemove={handleRemoveCluster} />
{/* Port Forwarding Section */}

Port Forwarding

setIsStartPortForwardOpen(true)} onStop={handleStopPortForward} onDelete={handleDeletePortForward} />
{/* Resource Browser Section */} {selectedClusterId && (

Resource Browser

)} {/* Add Cluster Modal */} setIsAddClusterOpen(false)} onAdd={handleAddCluster} /> {/* Port Forward Form */} setIsStartPortForwardOpen(false)} onStart={handleStartPortForward} />
); }