#!/bin/bash

echo "=== YourPart Frontend Update ==="
echo "NOTE: .env files will NOT be overwritten"

# 1. Zum Frontend-Verzeichnis wechseln
cd frontend

# 2. Berechtigungen für dist-Verzeichnis korrigieren (falls vorhanden)
if [ -d "dist" ]; then
    echo "Korrigiere Berechtigungen für dist-Verzeichnis..."
    sudo chown -R $USER:$USER dist/ 2>/dev/null || true
fi

# 3. Alle generierten Verzeichnisse löschen
echo "Lösche alle generierten Verzeichnisse..."
rm -rf dist/
rm -rf node_modules/.vite/
rm -rf node_modules/.cache/

# 4. Verwende bestehende .env-Dateien im Zielverzeichnis für Build
# Kopiere temporär die bestehende .env vom Ziel, falls vorhanden
TEMP_ENV="/tmp/yourpart-frontend-env-$$"
if [ -f /opt/yourpart/frontend/.env ]; then
    echo "Nutze bestehende .env-Datei vom Zielverzeichnis für Build..."
    sudo cp /opt/yourpart/frontend/.env "$TEMP_ENV"
    sudo chown $USER:$USER "$TEMP_ENV"
    cp "$TEMP_ENV" .env
elif [ -f .env.production ]; then
    echo "Nutze .env.production für Build..."
    cp .env.production .env
elif [ -f .env.server ]; then
    echo "Nutze .env.server für Build..."
    cp .env.server .env
fi

# 5. Frontend neu bauen – VITE_* aus Environment übernehmen oder Defaults setzen
echo "Baue Frontend neu..."
export VITE_API_BASE_URL=${VITE_API_BASE_URL:-https://www.your-part.de}
# Standard: Daemon direkt auf Port 4551, nicht über Apache-Proxy
export VITE_DAEMON_SOCKET=${VITE_DAEMON_SOCKET:-wss://www.your-part.de:4551}
export VITE_CHAT_WS_URL=${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235}

echo "VITE_API_BASE_URL=$VITE_API_BASE_URL"
echo "VITE_DAEMON_SOCKET=$VITE_DAEMON_SOCKET"
echo "VITE_CHAT_WS_URL=$VITE_CHAT_WS_URL"

npm run build

if [ $? -ne 0 ]; then
    echo "❌ Build fehlgeschlagen!"
    # Temporäre .env-Datei aufräumen
    rm -f "$TEMP_ENV"
    exit 1
fi

echo "✅ Build erfolgreich!"

# Temporäre .env-Datei aufräumen
rm -f "$TEMP_ENV"

# 6. Zielverzeichnis erstellen (falls nicht vorhanden)
echo "Erstelle Zielverzeichnis..."
sudo mkdir -p /opt/yourpart/frontend/dist

# 7. Altes Frontend löschen (außer .env-Dateien)
echo "Lösche altes Frontend (außer .env-Dateien)..."
sudo find /opt/yourpart/frontend/dist -mindepth 1 -exec rm -rf {} + 2>/dev/null || true

# 8. Neues Frontend kopieren
echo "Kopiere neues Frontend..."
sudo cp -r dist/* /opt/yourpart/frontend/dist/

# 9. .env-Dateien NICHT überschreiben - bestehende beibehalten
if [ -f /opt/yourpart/frontend/.env ]; then
    echo "✓ Bestehende .env-Datei wurde beibehalten (nicht überschrieben)"
else
    echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden"
    # Falls .env im Quellverzeichnis existiert, kopiere sie nur wenn sie im Ziel nicht existiert
    if [ -f .env ]; then
        echo "Kopiere .env-Datei (nur wenn nicht vorhanden)..."
        sudo cp .env /opt/yourpart/frontend/
    fi
fi

# 10. Berechtigungen setzen
echo "Setze Berechtigungen..."
sudo chown -R www-data:www-data /opt/yourpart/frontend/dist
if [ -f /opt/yourpart/frontend/.env ]; then
    sudo chown www-data:www-data /opt/yourpart/frontend/.env
    sudo chmod 644 /opt/yourpart/frontend/.env
fi
sudo chmod -R 755 /opt/yourpart/frontend/dist

# 11. Apache neu laden
echo "Lade Apache neu..."
sudo systemctl reload apache2

echo ""
echo "=== Frontend Update abgeschlossen! ==="
echo "✅ Frontend neu gebaut"
echo "✅ Frontend aktualisiert"
echo "✅ .env-Dateien wurden NICHT überschrieben"
echo "✅ Apache neu geladen"
echo ""

