import React, { useState, useEffect } from "react"; import { useKubernetesStore } from "@/stores/kubernetesStore"; import { PortForwardList } from "@/components/Kubernetes/PortForwardList"; import { PortForwardForm } from "@/components/Kubernetes/PortForwardForm"; import { ResourceBrowser } from "@/components/Kubernetes/ResourceBrowser"; import type { PortForwardResponse, KubeconfigInfo, PortForwardRequest } from "@/lib/tauriCommands"; import { listPortForwardsCmd, stopPortForwardCmd, deletePortForwardCmd, listKubeconfigsCmd, activateKubeconfigCmd, startPortForwardCmd, } from "@/lib/tauriCommands"; export function KubernetesPage() { const { selectedClusterId } = useKubernetesStore(); const [kubeconfigs, setKubeconfigs] = useState([]); const [portForwards, setPortForwards] = useState([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { loadData(); }, []); const loadData = async () => { setIsLoading(true); try { const [kubeconfigsData, portForwardsData] = await Promise.all([ listKubeconfigsCmd(), listPortForwardsCmd(), ]); setKubeconfigs(kubeconfigsData); setPortForwards(portForwardsData); } catch (err) { console.error("Failed to load data:", err); } finally { setIsLoading(false); } }; const handleActivateKubeconfig = async (id: string) => { try { await activateKubeconfigCmd(id); await loadData(); } catch (err) { console.error("Failed to activate kubeconfig:", err); alert("Failed to activate kubeconfig"); } }; 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 handleStartPortForward = async (portForward: PortForwardRequest) => { try { const result = await startPortForwardCmd(portForward); setPortForwards((prev) => [...prev, result]); } catch (err) { console.error("Failed to start port forward:", err); alert("Failed to start port forward"); } }; if (isLoading) { return (

Loading Kubernetes resources...

); } return (

Kubernetes Management

Manage your Kubernetes clusters and resources

{/* Cluster Management Section - Uses kubeconfig files from Settings */}

Clusters (from kubeconfig files)

{kubeconfigs.length === 0 ? (

No kubeconfig files uploaded

Upload kubeconfig files in Settings → Kubeconfig to manage Kubernetes clusters

) : (
{kubeconfigs.map((config) => (

{config.name}

{config.is_active && ( Active )}
Context: {config.context}
{config.cluster_url && (
Cluster: {config.cluster_url}
)}
{!config.is_active && ( )}
))}
)}
{/* Port Forwarding Section */}

Port Forwarding

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

Resource Browser

)}
); }