From 853a93e142f744ea37728fc0fdaa9de96ec2c0b7 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Tue, 24 Mar 2026 21:02:52 +0000 Subject: [PATCH] Upload main.js via GUI --- main.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 6e50bd8..68a7761 100644 --- a/main.js +++ b/main.js @@ -342,6 +342,7 @@ function readCredentials() { /* ==================== BACKUP CONFIGURATION ==================== */ let backupProviders = {}; // { [repoName]: provider instance } +const backupDoneSessions = new Map(); // { [sessionId]: timestamp } function getBackupConfigPath() { return ppath.join(app.getPath('userData'), 'backup-config.json'); @@ -1913,7 +1914,9 @@ ipcMain.handle('upload-and-push', async (event, data) => { // Auto-Backup vor Upload (wenn in Einstellungen aktiviert) const autoBackupEnabled = Boolean(credentials && credentials.autoBackupEnabled); - if (autoBackupEnabled && !data.skipBackup) { + const uploadSessionId = String(data.uploadSessionId || '').trim(); + const shouldSkipBySession = Boolean(uploadSessionId && backupDoneSessions.has(uploadSessionId)); + if (autoBackupEnabled && !data.skipBackup && !shouldSkipBySession) { const backupTarget = String((credentials && credentials.backupPrefLocalFolder) || '').trim(); const emitStatus = (payload) => { try { event.sender.send('pre-push-backup-status', payload); } catch (_) {} @@ -1937,6 +1940,10 @@ ipcMain.handle('upload-and-push', async (event, data) => { emitStatus({ stage: 'backup-failed', repoName: backupRepoName, error: backupResult?.error || 'Unbekannter Fehler' }); return { ok: false, error: `Auto-Backup vor Upload fehlgeschlagen: ${backupResult?.error || 'Unbekannter Fehler'}` }; } + if (uploadSessionId) { + backupDoneSessions.set(uploadSessionId, Date.now()); + setTimeout(() => backupDoneSessions.delete(uploadSessionId), 10 * 60 * 1000); + } emitStatus({ stage: 'backup-done', repoName: backupRepoName, filename: backupResult.filename || '' }); emitStatus({ stage: 'upload-start' }); } catch (backupErr) {