From 3ecb3125d36ccdfa638448255de898c41a588092 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Tue, 24 Mar 2026 20:59:13 +0000 Subject: [PATCH] Upload main.js via GUI --- main.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/main.js b/main.js index 8eb6e44..6e50bd8 100644 --- a/main.js +++ b/main.js @@ -1911,6 +1911,40 @@ ipcMain.handle('upload-and-push', async (event, data) => { const destPath = (data.destPath || '').replace(/^\//, '').replace(/\/$/, ''); if (!owner || !repo) return { ok: false, error: 'missing-owner-or-repo' }; + // Auto-Backup vor Upload (wenn in Einstellungen aktiviert) + const autoBackupEnabled = Boolean(credentials && credentials.autoBackupEnabled); + if (autoBackupEnabled && !data.skipBackup) { + const backupTarget = String((credentials && credentials.backupPrefLocalFolder) || '').trim(); + const emitStatus = (payload) => { + try { event.sender.send('pre-push-backup-status', payload); } catch (_) {} + }; + if (!backupTarget) { + return { ok: false, error: 'Auto-Backup ist aktiv, aber kein lokaler Backup-Zielordner ist gesetzt.' }; + } + // Nur den Repo-Namen ohne Owner verwenden (verhindert "/" im Dateinamen) + const backupRepoName = String(repo || ppath.basename(data.localFolder)).replace(/[<>:"/\\|?*]+/g, '-'); + // Wenn localFolder eine Datei ist, den Elternordner sichern + const statForBackup = fs.statSync(data.localFolder); + const backupProjectPath = statForBackup.isFile() ? ppath.dirname(data.localFolder) : data.localFolder; + try { + emitStatus({ stage: 'backup-start', repoName: backupRepoName, target: backupTarget }); + await ensureLocalBackupConfigured(backupRepoName, backupTarget); + const backupResult = await ipcMain._handle_create_cloud_backup(event, { + repoName: backupRepoName, + projectPath: backupProjectPath + }); + if (!backupResult?.ok) { + emitStatus({ stage: 'backup-failed', repoName: backupRepoName, error: backupResult?.error || 'Unbekannter Fehler' }); + return { ok: false, error: `Auto-Backup vor Upload fehlgeschlagen: ${backupResult?.error || 'Unbekannter Fehler'}` }; + } + emitStatus({ stage: 'backup-done', repoName: backupRepoName, filename: backupResult.filename || '' }); + emitStatus({ stage: 'upload-start' }); + } catch (backupErr) { + emitStatus({ stage: 'backup-failed', repoName: backupRepoName, error: mapIpcError(backupErr) }); + return { ok: false, error: `Auto-Backup vor Upload fehlgeschlagen: ${mapIpcError(backupErr)}` }; + } + } + // Prüfen ob es eine Datei oder ein Ordner ist const stat = fs.statSync(data.localFolder); const isFile = stat.isFile();