Upload file CREATE_COMPLETE_FILES.sh via GUI
This commit is contained in:
205
CREATE_COMPLETE_FILES.sh
Normal file
205
CREATE_COMPLETE_FILES.sh
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
##############################################################################
|
||||||
|
# CREATE_COMPLETE_FILES.sh
|
||||||
|
#
|
||||||
|
# Dieses Script erstellt die vollständigen renderer.js und main.js Dateien
|
||||||
|
# mit allen notwendigen Änderungen für Auto-Login und persistente Settings.
|
||||||
|
#
|
||||||
|
# VERWENDUNG:
|
||||||
|
# 1. Speichere dieses Script in deinem Projekt-Ordner
|
||||||
|
# 2. Mache es ausführbar: chmod +x CREATE_COMPLETE_FILES.sh
|
||||||
|
# 3. Führe es aus: ./CREATE_COMPLETE_FILES.sh
|
||||||
|
# 4. Die neuen Dateien werden erstellt: renderer_NEW.js und main_NEW.js
|
||||||
|
# 5. Ersetze deine alten Dateien mit den neuen
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
echo "========================================="
|
||||||
|
echo "Erstelle vollständige Dateien..."
|
||||||
|
echo "========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe ob Original-Dateien existieren
|
||||||
|
if [ ! -f "renderer.js" ]; then
|
||||||
|
echo "❌ FEHLER: renderer.js nicht gefunden!"
|
||||||
|
echo "Bitte führe dieses Script im Projekt-Ordner aus."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "main.js" ]; then
|
||||||
|
echo "❌ FEHLER: main.js nicht gefunden!"
|
||||||
|
echo "Bitte führe dieses Script im Projekt-Ordner aus."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Original-Dateien gefunden"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Backup erstellen
|
||||||
|
echo "📦 Erstelle Backups..."
|
||||||
|
cp renderer.js renderer.js.backup
|
||||||
|
cp main.js main.js.backup
|
||||||
|
echo "✅ Backups erstellt: renderer.js.backup, main.js.backup"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# RENDERER.JS - Patch anwenden
|
||||||
|
echo "🔧 Patche renderer.js..."
|
||||||
|
|
||||||
|
# Erstelle temporäre Datei mit der neuen DOMContentLoaded Funktion
|
||||||
|
cat > /tmp/new_domcontentloaded.js << 'NEWFUNC'
|
||||||
|
window.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
// Prevent default drag/drop on document (except in repo view)
|
||||||
|
document.addEventListener('dragover', e => {
|
||||||
|
if (currentState.view !== 'gitea-repo') {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.addEventListener('drop', e => {
|
||||||
|
if (currentState.view !== 'gitea-repo') {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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');
|
||||||
|
}
|
||||||
|
NEWFUNC
|
||||||
|
|
||||||
|
# Nutze sed um die alte Funktion zu ersetzen
|
||||||
|
# (Dies ist komplex - nutze Python für robusteres Replacement)
|
||||||
|
python3 << 'PYSCRIPT'
|
||||||
|
import re
|
||||||
|
|
||||||
|
# Lese Original-Datei
|
||||||
|
with open('renderer.js', 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Lese neue Funktion
|
||||||
|
with open('/tmp/new_domcontentloaded.js', 'r') as f:
|
||||||
|
new_func_start = f.read()
|
||||||
|
|
||||||
|
# Finde die alte DOMContentLoaded Funktion und ersetze nur den Anfang
|
||||||
|
# Der Rest (Event Handlers) bleibt gleich
|
||||||
|
pattern = r"(window\.addEventListener\('DOMContentLoaded', async \(\) => \{.*?// Load credentials.*?try \{.*?\} catch \(error\) \{.*?console\.error\('Error loading credentials:', error\);.*?\})"
|
||||||
|
|
||||||
|
# Suche nach dem Pattern
|
||||||
|
match = re.search(pattern, content, re.DOTALL)
|
||||||
|
if match:
|
||||||
|
# Ersetze nur den Credentials-Loading Teil
|
||||||
|
old_section = match.group(1)
|
||||||
|
content = content.replace(old_section, new_func_start)
|
||||||
|
|
||||||
|
# Schreibe neue Datei
|
||||||
|
with open('renderer_NEW.js', 'w', encoding='utf-8') as f:
|
||||||
|
f.write(content)
|
||||||
|
print("✅ renderer_NEW.js erstellt")
|
||||||
|
else:
|
||||||
|
print("⚠️ Konnte Funktion nicht automatisch patchen")
|
||||||
|
print(" Bitte nutze die manuellen Patches")
|
||||||
|
PYSCRIPT
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# MAIN.JS - Patch anwenden
|
||||||
|
echo "🔧 Patche main.js..."
|
||||||
|
|
||||||
|
python3 << 'PYSCRIPT2'
|
||||||
|
import re
|
||||||
|
|
||||||
|
# Lese Original
|
||||||
|
with open('main.js', 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# ÄNDERUNG 1: Entferne getDataDir, ändere getCredentialsFilePath
|
||||||
|
old_funcs = r"function getDataDir\(\) \{[^}]+\}\s*function getCredentialsFilePath\(\) \{[^}]+\}"
|
||||||
|
new_func = """function getCredentialsFilePath() {
|
||||||
|
return ppath.join(app.getPath('userData'), 'credentials.json');
|
||||||
|
}"""
|
||||||
|
|
||||||
|
content = re.sub(old_funcs, new_func, content)
|
||||||
|
|
||||||
|
# ÄNDERUNG 2: Patche save-credentials Handler
|
||||||
|
old_handler = r"(ipcMain\.handle\('save-credentials', async \(event, data\) => \{[\s\S]*?const DATA_DIR = getDataDir\(\);[\s\S]*?ensureDir\(DATA_DIR\);[^}]+)\}"
|
||||||
|
|
||||||
|
new_handler = """ipcMain.handle('save-credentials', async (event, data) => {
|
||||||
|
try {
|
||||||
|
const CREDENTIALS_FILE = getCredentialsFilePath();
|
||||||
|
const userDataDir = app.getPath('userData');
|
||||||
|
if (!fs.existsSync(userDataDir)) {
|
||||||
|
fs.mkdirSync(userDataDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const json = JSON.stringify(data);
|
||||||
|
const cipher = crypto.createCipheriv(ALGORITHM, SECRET_KEY, IV);
|
||||||
|
const encrypted = Buffer.concat([cipher.update(json, 'utf8'), cipher.final()]);
|
||||||
|
fs.writeFileSync(CREDENTIALS_FILE, encrypted);
|
||||||
|
|
||||||
|
console.log('✅ Credentials saved to:', CREDENTIALS_FILE);
|
||||||
|
return { ok: true };
|
||||||
|
} catch (e) {
|
||||||
|
console.error('save-credentials error', e);
|
||||||
|
return { ok: false, error: String(e) };
|
||||||
|
}
|
||||||
|
});"""
|
||||||
|
|
||||||
|
content = re.sub(old_handler, new_handler, content, flags=re.DOTALL)
|
||||||
|
|
||||||
|
# Schreibe neue Datei
|
||||||
|
with open('main_NEW.js', 'w', encoding='utf-8') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print("✅ main_NEW.js erstellt")
|
||||||
|
PYSCRIPT2
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "========================================="
|
||||||
|
echo "✅ FERTIG!"
|
||||||
|
echo "========================================="
|
||||||
|
echo ""
|
||||||
|
echo "Neue Dateien erstellt:"
|
||||||
|
echo " 📄 renderer_NEW.js"
|
||||||
|
echo " 📄 main_NEW.js"
|
||||||
|
echo ""
|
||||||
|
echo "Backups erstellt:"
|
||||||
|
echo " 💾 renderer.js.backup"
|
||||||
|
echo " 💾 main.js.backup"
|
||||||
|
echo ""
|
||||||
|
echo "Nächste Schritte:"
|
||||||
|
echo " 1. Prüfe die neuen Dateien"
|
||||||
|
echo " 2. Ersetze die alten:"
|
||||||
|
echo " mv renderer_NEW.js renderer.js"
|
||||||
|
echo " mv main_NEW.js main.js"
|
||||||
|
echo " 3. Starte die App neu"
|
||||||
|
echo ""
|
||||||
|
echo "Bei Problemen: Backups wiederherstellen"
|
||||||
|
echo " mv renderer.js.backup renderer.js"
|
||||||
|
echo " mv main.js.backup main.js"
|
||||||
|
echo ""
|
||||||
Reference in New Issue
Block a user