import React, { useState } from "react"; import useGiteaCommits from "../../hooks/useGiteaCommits"; import GiteaCommitItem from "./GiteaCommitItem"; import "../../styles/GiteaWidget.css"; import { FaCodeBranch, FaSync, FaExclamationTriangle, FaServer, } from "react-icons/fa"; export const GiteaWidget = ({ defaultGiteaUrl = "https://git.konceptkit.com/", defaultRepo = "owner/repo", token = null, limit = 5, branch = "main", title = "Recent Commits", }) => { const [giteaUrl, setGiteaUrl] = useState(defaultGiteaUrl); const [repo, setRepo] = useState(defaultRepo); const [inputGiteaUrl, setInputGiteaUrl] = useState(defaultGiteaUrl); const [inputRepo, setInputRepo] = useState(defaultRepo); const [showAdvanced, setShowAdvanced] = useState(false); const { commits, loading, error } = useGiteaCommits( giteaUrl, repo, token, limit, branch ); const handleSubmit = (e) => { e.preventDefault(); // Validate URL let url = inputGiteaUrl; if (!url.startsWith("http")) { url = `https://${url}`; } // Remove trailing slash if present url = url.replace(/\/$/, ""); setGiteaUrl(url); // Validate repo format if (inputRepo.includes("/")) { setRepo(inputRepo); } else { alert('Repository must be in format "owner/repo"'); } }; // Example preset repositories const presetRepos = [ { label: "Documentation", value: "owner/docs" }, { label: "API Server", value: "owner/api-server" }, { label: "Web App", value: "owner/web-app" }, ]; return (
{giteaUrl} | Repo: {repo} |
Branch: {branch}
Failed to load commits
{error}Ensure: