import React, { useState, useEffect } from 'react'; import Settings from './Settings.jsx'; export default function App() { const [folder, setFolder] = useState(''); const [repoName, setRepoName] = useState(''); const [platform, setPlatform] = useState('gitea'); const [status, setStatus] = useState('Bereit'); const [showSettings, setShowSettings] = useState(false); const [branches, setBranches] = useState([]); const [selectedBranch, setSelectedBranch] = useState('main'); const [logs, setLogs] = useState([]); const [progress, setProgress] = useState(0); async function selectFolder() { const selected = await window.electronAPI.selectFolder(); if (!selected) return; setFolder(selected); const branchList = await window.electronAPI.getBranches({ folder: selected }); setBranches(branchList); if (branchList.includes('main')) setSelectedBranch('main'); else if (branchList.includes('master')) setSelectedBranch('master'); else if (branchList.length > 0) setSelectedBranch(branchList[0]); } async function createRepoHandler() { if (!repoName) return alert('Repo-Name erforderlich!'); setStatus('Repository wird erstellt…'); const result = await window.electronAPI.createRepo({ name: repoName, platform }); setStatus(result ? 'Repository erstellt!' : 'Fehler beim Erstellen des Repositories.'); } async function pushProjectHandler() { if (!folder) return alert('Bitte zuerst einen Projektordner auswählen!'); setStatus('Projekt wird gepusht…'); setProgress(0); const result = await window.electronAPI.pushProject({ folder, branch: selectedBranch, onProgress: (p) => setProgress(p), }); setStatus(result ? 'Projekt gepusht!' : 'Push fehlgeschlagen.'); if (result) { const logList = await window.electronAPI.getCommitLogs({ folder }); setLogs(logList); } } return (
{/* ── Toolbar ── */}
Git Manager Logo
Workspace Control Git Manager Explorer Pro
{['gitea', 'github'].map(p => ( ))}
{branches.length > 0 && ( )}
{/* ── Main ── */}
{/* Fortschrittsbalken */} {progress > 0 && progress < 100 && (
)} {/* Repo erstellen / Ordner */}

📁 Projekt & Repository

setRepoName(e.target.value)} />
{/* Commit-Logs */} {logs.length > 0 && (

📊 Commit-Verlauf

    {logs.map((log, i) => (
  • {log}
  • ))}
)} {logs.length === 0 && !folder && (
📂

Öffne einen lokalen Ordner oder lade Repos über die Toolbar.

)}
{/* ── Settings-Modal ── */} {showSettings && (
{ if (e.target === e.currentTarget) setShowSettings(false); }}> setShowSettings(false)} />
)}
); }