"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { useAuth } from "@/auth/clerk"; import { DashboardPageLayout } from "@/components/templates/DashboardPageLayout"; import { ForgejoRepositoriesTable } from "@/components/git/ForgejoRepositoriesTable"; import { getForgejoRepositories, deleteForgejoRepository, type ForgejoRepository, } from "@/lib/api-forgejo"; export default function ForgejoRepositoriesPage() { const router = useRouter(); const auth = useAuth(); const [repositories, setRepositories] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchRepositories = async () => { try { setIsLoading(true); const data = await getForgejoRepositories(); setRepositories(data); setError(null); } catch (err) { setError(err instanceof Error ? err.message : "Failed to load repositories"); } finally { setIsLoading(false); } }; if (auth.isSignedIn) { fetchRepositories(); } }, [auth.isSignedIn, auth.getToken]); const handleDelete = async (repository: ForgejoRepository) => { if ( confirm(`Are you sure you want to delete "${repository.display_name || repository.repo}"? This action cannot be undone.`) ) { try { await deleteForgejoRepository(repository.id); setRepositories((prev) => prev.filter((r) => r.id !== repository.id)); alert("Repository deleted successfully"); } catch (err) { alert(err instanceof Error ? err.message : "Failed to delete repository"); } } }; return (

Repositories

{error ? (

{error}

) : ( )}
); }