import React, { useState, useEffect } from "react"; import { useParams } from "react-router-dom"; import { apiClient } from "../api/client"; import { GitRepository } from "../api/git_repositories"; export const RepositoriesSettingsTab: React.FC = () => { const { projectId } = useParams<{ projectId: string }>(); const [repositories, setRepositories] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(">"); useEffect(() => { const fetchRepositories = async () => { try { const response = await apiClient.get( `/projects/${projectId}/repositories` ); setRepositories(response.data); } catch (err) { setError("Failed to load repositories"); } finally { setLoading(false); } }; fetchRepositories(); }, [projectId]); const handleDelete = async (repoId: string) => { if (!window.confirm("Are you sure you want to delete this repository?")) return; try { await apiClient.delete(`/projects/${projectId}/repositories/${repoId}`); setRepositories(repositories.filter((r) => r.id !== repoId)); } catch (err) { setError("Failed to delete repository"); } }; if (loading) return
Loading...
; return (

Repositories

{error &&
{error}
}
{repositories.length === 0 ? (

No repositories yet.

) : ( repositories.map((repo) => (

{repo.name}

{repo.remote_url}

{repo.is_mirror ? "Mirror" : "Clone"}
)) )}
); };