From 0a6703b87e51e1929f1d5345102da161332f06df Mon Sep 17 00:00:00 2001 From: M_Viper Date: Sat, 7 Feb 2026 20:44:20 +0100 Subject: [PATCH] Update from Git Manager GUI --- renderer/modules/editor.js | 0 renderer/modules/gitea.js | 0 renderer/modules/progress.js | 0 renderer/modules/state.js | 0 renderer/modules/ui.js | 0 renderer/renderer.js | 202 +++++++++++++++++------------------ 6 files changed, 101 insertions(+), 101 deletions(-) create mode 100644 renderer/modules/editor.js create mode 100644 renderer/modules/gitea.js create mode 100644 renderer/modules/progress.js create mode 100644 renderer/modules/state.js create mode 100644 renderer/modules/ui.js diff --git a/renderer/modules/editor.js b/renderer/modules/editor.js new file mode 100644 index 0000000..e69de29 diff --git a/renderer/modules/gitea.js b/renderer/modules/gitea.js new file mode 100644 index 0000000..e69de29 diff --git a/renderer/modules/progress.js b/renderer/modules/progress.js new file mode 100644 index 0000000..e69de29 diff --git a/renderer/modules/state.js b/renderer/modules/state.js new file mode 100644 index 0000000..e69de29 diff --git a/renderer/modules/ui.js b/renderer/modules/ui.js new file mode 100644 index 0000000..e69de29 diff --git a/renderer/renderer.js b/renderer/renderer.js index f6737d0..070bd32 100644 --- a/renderer/renderer.js +++ b/renderer/renderer.js @@ -1588,18 +1588,39 @@ window.addEventListener('DOMContentLoaded', async () => { } }); - // Load credentials + // Load credentials and auto-login if available try { const creds = await window.electronAPI.loadCredentials(); if (creds) { + // Fülle Settings-Felder if ($('githubToken')) $('githubToken').value = creds.githubToken || ''; if ($('giteaToken')) $('giteaToken').value = creds.giteaToken || ''; if ($('giteaURL')) $('giteaURL').value = creds.giteaURL || ''; + + // 🆕 AUTO-LOGIN: Wenn Gitea-Credentials vorhanden sind, lade sofort die Repos + if (creds.giteaToken && creds.giteaURL) { + console.log('✅ Credentials gefunden - Auto-Login wird gestartet...'); + setStatus('Lade deine Projekte...'); + + // Kurze Verzögerung damit UI fertig geladen ist + setTimeout(() => { + loadGiteaRepos(); + }, 500); + } else { + console.log('ℹ️ Keine vollständigen Gitea-Credentials - bitte in Settings eintragen'); + setStatus('Bereit - bitte Settings konfigurieren'); + } + } else { + console.log('ℹ️ Keine Credentials gespeichert'); + setStatus('Bereit - bitte Settings konfigurieren'); } } catch (error) { console.error('Error loading credentials:', error); + setStatus('Fehler beim Laden der Einstellungen'); } + // Rest of Event Handlers... (bleibt unverändert) + // Event Handlers if ($('btnLoadGiteaRepos')) { $('btnLoadGiteaRepos').onclick = loadGiteaRepos; @@ -1723,8 +1744,6 @@ window.addEventListener('DOMContentLoaded', async () => { }; } - // Modal wird mit pointer-events: none nicht geschlossen durch Klicks - // Der Grid bleibt voll interaktiv für neue Tabs // Keyboard shortcuts document.addEventListener('keydown', (e) => { @@ -2143,15 +2162,13 @@ function createReleaseCard(release, isLatest) { } /* ------------------------- - CREATE RELEASE MODAL + CREATE RELEASE MODAL (MIT DATEI-UPLOAD) ------------------------- */ function showCreateReleaseModal(owner, repo) { - let selectedFiles = []; - const modal = document.createElement('div'); modal.className = 'modal'; modal.innerHTML = ` -
+

🚀 Neues Release erstellen

@@ -2186,22 +2203,30 @@ function showCreateReleaseModal(owner, repo) {
- + +
- - -
+ +
+ + +
@@ -2221,53 +2246,28 @@ function showCreateReleaseModal(owner, repo) { `; document.body.appendChild(modal); - - // Asset-Auswahl Handler - $('btnSelectAssets').onclick = async () => { - const res = await window.electronAPI.selectFile(); - if (res.ok && res.files && res.files.length > 0) { - selectedFiles = res.files; - updateAssetsList(); + + // Variable zum Speichern des gewählten Dateipfads + let selectedAssetPath = null; + + // Event Listener: Datei auswählen + $('btnSelectReleaseAsset').onclick = async () => { + try { + const res = await window.electronAPI.selectFile(); + if (res.ok && res.files && res.files.length > 0) { + selectedAssetPath = res.files[0]; + const fileName = selectedAssetPath.split(/[\\/]/).pop(); + $('releaseAssetInput').value = fileName; + $('releaseAssetInput').style.color = 'var(--text-primary)'; + $('releaseAssetInput').style.borderColor = 'var(--accent-primary)'; + } + } catch (error) { + console.error('Fehler beim Auswählen der Datei:', error); + alert('Konnte Dateidialog nicht öffnen.'); } }; - function updateAssetsList() { - const list = $('assetsList'); - if (selectedFiles.length === 0) { - list.innerHTML = ''; - return; - } - - list.innerHTML = selectedFiles.map((file, idx) => ` -
- 📄 ${file.name} - -
- `).join(''); - } - - // Asset entfernen (global für onclick) - window.removeAsset = (idx) => { - selectedFiles.splice(idx, 1); - updateAssetsList(); - }; - + // Event Listener: Release erstellen $('btnCreateRelease').onclick = async () => { const tag = $('releaseTag').value.trim(); const name = $('releaseName').value.trim() || tag; @@ -2281,14 +2281,10 @@ function showCreateReleaseModal(owner, repo) { return; } - const btnCreate = $('btnCreateRelease'); - const originalText = btnCreate.textContent; - btnCreate.disabled = true; - btnCreate.textContent = 'Erstelle Release...'; - setStatus('Creating release...'); try { + // 1. Release erstellen const res = await window.electronAPI.createRelease({ owner, repo, @@ -2301,43 +2297,49 @@ function showCreateReleaseModal(owner, repo) { }); if (res.ok) { - // Assets hochladen, falls vorhanden - if (selectedFiles.length > 0) { - btnCreate.textContent = `Lade Assets (0/${selectedFiles.length})...`; - setStatus(`Uploading ${selectedFiles.length} asset(s)...`); + // 2. Falls eine Datei ausgewählt wurde, direkt hochladen + if (selectedAssetPath) { + setStatus('Release erstellt. Lade Datei hoch...'); + showProgress(50, 'Uploading Asset...'); - for (let i = 0; i < selectedFiles.length; i++) { - const file = selectedFiles[i]; - btnCreate.textContent = `Lade Assets (${i + 1}/${selectedFiles.length})...`; - - try { - await window.electronAPI.uploadReleaseAsset({ - owner, - repo, - releaseId: res.release.id, - filePath: file.path, - fileName: file.name - }); - } catch (err) { - console.error('Asset upload error:', err); - // Weiter mit nächster Datei + try { + const fileName = selectedAssetPath.split(/[\\/]/).pop(); + const uploadRes = await window.electronAPI.uploadReleaseAsset({ + owner, + repo, + releaseId: res.release.id, + filePath: selectedAssetPath, + fileName + }); + + if (uploadRes.ok) { + setStatus(`Release "${tag}" und Asset erstellt!`); + } else { + console.error('Asset Upload fehlgeschlagen:', uploadRes.error); + alert(`Release erstellt, aber Asset Upload fehlgeschlagen: ${uploadRes.error}`); + setStatus('Release erstellt (Upload Fehler)'); } + } catch (uploadErr) { + console.error('Upload error:', uploadErr); + alert('Release erstellt, aber Fehler beim Hochladen der Datei.'); + setStatus('Release erstellt (Upload Fehler)'); + } finally { + hideProgress(); } + } else { + setStatus('Release created!'); } - + modal.remove(); - setStatus('Release created successfully!'); - loadRepoReleases(owner, repo); // Reload + loadRepoReleases(owner, repo); // Liste neu laden } else { setStatus('Failed: ' + res.error); - btnCreate.disabled = false; - btnCreate.textContent = originalText; + alert('Fehler beim Erstellen des Releases: ' + res.error); } } catch (error) { console.error('Create release error:', error); setStatus('Create failed'); - btnCreate.disabled = false; - btnCreate.textContent = originalText; + alert('Ein unerwarteter Fehler ist aufgetreten.'); } }; @@ -2348,7 +2350,6 @@ function showCreateReleaseModal(owner, repo) { if (e.target === modal) modal.remove(); }; } - /* ------------------------- UPLOAD ASSET DIALOG ------------------------- */ @@ -2360,9 +2361,8 @@ async function showUploadAssetDialog(release) { return; } - const file = res.files[0]; - const filePath = file.path; - const fileName = file.name; + const filePath = res.files[0]; + const fileName = filePath.split(/[\\/]/).pop(); setStatus(`Uploading ${fileName}...`); showProgress(0, `Uploading ${fileName}...`);