// components/GiteaWidget/GiteaWidget.jsx import React, { useState, useEffect } from 'react'; import useGiteaCommits from '../../hooks/useGiteaCommits'; import GiteaCommitItem from "./GiteaCommitItem"; import { FaCodeBranch, FaSync, FaExclamationTriangle, FaServer, FaCog } from 'react-icons/fa'; import '../../styles/GiteaWidget.css'; // Get environment variables from import.meta.env const ENV = { GITEA_API_URL: import.meta.env.VITE_GITEA_API_URL, DEFAULT_REPO: import.meta.env.VITE_DEFAULT_REPO, GITEA_TOKEN: import.meta.env.VITE_GITEA_TOKEN, COMMIT_LIMIT: parseInt(import.meta.env.VITE_COMMIT_LIMIT) || 5, DEFAULT_BRANCH: import.meta.env.VITE_DEFAULT_BRANCH, SHOW_CONFIG: import.meta.env.VITE_SHOW_CONFIG !== 'false', MODE: import.meta.env.MODE, // 'development', 'production', etc. DEV: import.meta.env.DEV, PROD: import.meta.env.PROD }; const GiteaWidget = ({ // Use environment variables as defaults defaultGiteaUrl = ENV.GITEA_API_URL || 'https://gitea.example.com', defaultRepo = ENV.DEFAULT_REPO || 'owner/repo', token = ENV.GITEA_TOKEN || null, limit = ENV.COMMIT_LIMIT || 5, branch = ENV.DEFAULT_BRANCH || 'main', title = 'Recent Commits', showConfig = ENV.SHOW_CONFIG }) => { 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); // Log environment variables in development useEffect(() => { if (ENV.DEV) { console.log('Vite Environment Variables:', { GITEA_API_URL: ENV.GITEA_API_URL, DEFAULT_REPO: ENV.DEFAULT_REPO, hasToken: !!ENV.GITEA_TOKEN, MODE: ENV.MODE, allEnv: import.meta.env }); } }, []); const { commits, loading, error } = useGiteaCommits( giteaUrl, repo, token, limit, branch ); const handleSubmit = (e) => { e.preventDefault(); // Validate URL let url = inputGiteaUrl?.trim(); if (url && !url.startsWith('http')) { url = `https://${url}`; } // Remove trailing slash if present url = url?.replace(/\/$/, '') || defaultGiteaUrl; setGiteaUrl(url); // Validate repo format if (inputRepo.includes('/')) { setRepo(inputRepo); } else { alert('Repository must be in format "owner/repo"'); } }; // Reset to environment defaults const resetToDefaults = () => { setGiteaUrl(defaultGiteaUrl); setRepo(defaultRepo); setInputGiteaUrl(defaultGiteaUrl); setInputRepo(defaultRepo); }; return (
{giteaUrl === defaultGiteaUrl ? 'Default' : 'Custom'}
{repo}
Branch: {branch}
Showing: {limit} commits
{ENV.DEV && (
Mode: {ENV.MODE}
)}
Failed to load commits
{error} {ENV.DEV && (Debug info: