#!/bin/bash
# Wrapper скрипт для запуска Firefox KDE Nightly
# Адаптировано из rosagram-wrapper.sh

FIREFOX_DIR="/opt/firefox-kde-nightly"
LOG_DIR="/var/log/firefox-kde-nightly-docker"
STATUS_FILE="/var/lib/firefox-kde-nightly-docker/status"
BUILD_SCRIPT="/usr/bin/firefox-kde-nightly-build"
LOG_FILE="$LOG_DIR/firefox.log"

# Проверка на root
if [ "$EUID" -eq 0 ]; then
    echo "❌ Не запускайте Firefox от root!"
    echo "Запустите как обычный пользователь: firefox-kde-nightly"
    exit 1
fi

# Создаем директорию для логов если нет
if [ ! -d "$LOG_DIR" ]; then
    mkdir -p "$LOG_DIR" 2>/dev/null || sudo mkdir -p "$LOG_DIR"
fi

# Функция логирования (ОБЫЧНЫЙ % ДЛЯ date, НЕ НАДО ЭКРАНИРОВАТЬ ЗДЕСЬ!)
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Проверка статуса сборки
check_build_status() {
    if [ ! -f "$STATUS_FILE" ]; then
        echo "not_installed"
    else
        cat "$STATUS_FILE"
    fi
}

# Проверка наличия собранного Firefox
check_firefox() {
    if [ -f "$FIREFOX_DIR/firefox" ]; then
        echo "$FIREFOX_DIR/firefox"
    elif [ -f "$FIREFOX_DIR/firefox/firefox" ]; then
        echo "$FIREFOX_DIR/firefox/firefox"
    else
        echo ""
    fi
}

# Основная логика
FIREFOX_BIN=$(check_firefox)

if [ -z "$FIREFOX_BIN" ]; then
    STATUS=$(check_build_status)
    
    if [ "$STATUS" = "building" ]; then
        log "=========================================="
        log "Firefox уже собирается в другом процессе"
        log "=========================================="
        log "Отслеживайте прогресс:"
        log "  tail -f $LOG_DIR/build.log"
        exit 1
    fi
    
    if [ "$STATUS" = "failed" ]; then
        log "=========================================="
        log "❌ Предыдущая сборка завершилась ошибкой"
        log "=========================================="
        log "Запустите принудительную пересборку:"
        log "  sudo $BUILD_SCRIPT --clean"
        log "  firefox-kde-nightly"
        log ""
        log "Лог ошибки:"
        log "  tail -50 $LOG_DIR/build.log"
        exit 1
    fi
    
    # Запускаем сборку
    log "=========================================="
    log "Первый запуск Firefox KDE Nightly"
    log "=========================================="
    log "Начинаем сборку Firefox в Docker контейнере..."
    log "Это займет 10-30 минут. Пожалуйста, подождите."
    log ""
    log "Для отслеживания прогресса в другом окне:"
    log "  tail -f $LOG_DIR/build.log"
    log "=========================================="
    
    # Запускаем сборку и ждем её завершения
    "$BUILD_SCRIPT" 2>&1 | tee -a "$LOG_DIR/build.log"
    
    BUILD_RESULT=${PIPESTATUS[0]}
    
    if [ $BUILD_RESULT -ne 0 ]; then
        log "=========================================="
        log "❌ ОШИБКА: Сборка Firefox не удалась!"
        log "=========================================="
        echo "failed" > "$STATUS_FILE"
        exit 1
    fi
    
    # Проверяем наличие бинарника после сборки
    FIREFOX_BIN=$(check_firefox)
    
    if [ -z "$FIREFOX_BIN" ]; then
        log "=========================================="
        log "❌ ОШИБКА: Firefox не найден после сборки!"
        log "=========================================="
        echo "failed" > "$STATUS_FILE"
        exit 1
    fi
    
    log "=========================================="
    log "✅ Сборка успешно завершена!"
    log "=========================================="
    echo "installed" > "$STATUS_FILE"
    
    # Обновляем кэш KDE
    if command -v kbuildsycoca6 &>/dev/null; then
        kbuildsycoca6 --noincremental &>/dev/null || true
    fi
    
    # Обновляем кэш иконок
    if command -v gtk-update-icon-cache &>/dev/null; then
        gtk-update-icon-cache -f -t /usr/share/icons/hicolor &>/dev/null || true
    fi
    
    log "Firefox готов к запуску!"
    log ""
fi

# Еще раз проверяем наличие бинарника
FIREFOX_BIN=$(check_firefox)
if [ -z "$FIREFOX_BIN" ]; then
    log "❌ Критическая ошибка: Firefox не найден!"
    exit 1
fi

# Настройки для KDE Plasma 6
export XDG_CURRENT_DESKTOP="KDE"
export XDG_SESSION_DESKTOP="KDE"
export XDG_SESSION_TYPE="wayland"

# Для Wayland
if [ "$XDG_SESSION_TYPE" = "wayland" ] || [ -n "$WAYLAND_DISPLAY" ]; then
    export MOZ_ENABLE_WAYLAND=1
    export MOZ_DBUS_REMOTE=1
    export MOZ_USE_XINPUT2=1
    export GDK_BACKEND=wayland
    log "Запуск в режиме Wayland"
else
    log "Запуск в режиме X11"
fi

# Для аппаратного ускорения
if command -v vainfo &>/dev/null; then
    export MOZ_VAAPI_DRIVER_PATH="/usr/lib64/dri"
    log "VA-API аппаратное ускорение включено"
fi

# Для корректного отображения в KDE
export QT_QPA_PLATFORM="wayland;xcb"
export QT_STYLE_OVERRIDE="breeze"

# Запускаем Firefox
log "Запуск Firefox с параметрами: $*"
exec "$FIREFOX_BIN" "$@"