#!/bin/bash

# رنگ‌ها
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

echo -e "${BLUE}🚀 شروع اصلاح نهایی JS و بررسی 401...\033[0m"

PROJECT_PATH="/var/www/html/mylaravel"
cd "$PROJECT_PATH"

# ---------------------------------------------------------
# بخش 1: رفع خطای 401 (اگر هنوز پابرجاست)
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 بررسی روت /api/cart/hover...\033[0m"
ROUTES_FILES=$(find routes -name "*.php" -type f)

for file in $ROUTES_FILES; do
    if grep -q "'/cart/hover'" "$file" 2>/dev/null; then
        echo -e "${GREEN}✅ روت در $file یافت شد.\033[0m"
        # حذف middleware auth
        sed -i "s|Route::get('/cart/hover', \[\([^]]*\)\])->middleware('auth')|Route::get('/cart/hover', [\1])|g" "$file"
        # اگر فرمت string بود
        sed -i "s|Route::get('/cart/hover'|Route::get('/cart/hover'|g" "$file"
    fi
done

php artisan route:clear
echo -e "${GREEN}✅ کش روت‌ها پاک شد.\033[0m"

# ---------------------------------------------------------
# بخش 2: رفع خطای JavaScript (دقیق و بدون باگ)
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 اصلاح فایل multizoom.js...\033[0m"

JS_FILE="public/js/multizoom.js"

if [ -f "$JS_FILE" ]; then
    # 1. رفع خطای SyntaxError (نقطه ویرگول اضافی)
    sed -i 's/;;/;/g' "$JS_FILE"
    
    # 2. رفع خطای dispatchEvent
    # به جای استفاده از cat که مشکل داشت، مستقیماً با sed کد را ایمن می‌کنیم
    # ما تمام توابعی که dispatchEvent دارند را پیدا کرده و شرط if اضافه می‌کنیم
    # این روش برای کدهای فشرده کمی پیچیده است، پس یک راه ساده‌تر می‌زنیم:
    # اضافه کردن یک تابع کمکی در ابتدای فایل که dispatchEvent را ایمن می‌کند
    
    # ایجاد یک فایل موقت برای کد جدید
    TEMP_FILE=$(mktemp)
    
    # نوشتن کد wrapper در فایل موقت
    cat > "$TEMP_FILE" << 'WRAPPER_EOF'
(function(){
    if(typeof jQuery === "undefined") return;
    jQuery(document).on("click", "*[onclick*='dispatchEvent']", function(e){
        var self = this;
        setTimeout(function(){
            if(self.dispatchEvent){
                self.dispatchEvent(new Event('click'));
            } else {
                // اگر dispatchEvent نبود، کلیک عادی
                $(self).trigger('click');
            }
        }, 0);
    });
})();
WRAPPER_EOF

    # ترکیب فایل جدید با فایل اصلی
    cat "$TEMP_FILE" "$JS_FILE" > "$JS_FILE.new"
    mv "$JS_FILE.new" "$JS_FILE"
    rm "$TEMP_FILE"
    
    echo -e "${GREEN}✅ خطای dispatchEvent با اضافه کردن wrapper ایمن شد.\033[0m"
    
    # 3. مرتب‌سازی کد JS (اختیاری)
    if command -v js-beautify &> /dev/null; then
        js-beautify --replace "$JS_FILE"
        echo -e "${GREEN}✅ کد مرتب شد.\033[0m"
    else
        echo -e "${YELLOW}⚠️ js-beautify نصب نیست.\033[0m"
    fi
else
    echo -e "${RED}❌ فایل multizoom.js یافت نشد.\033[0m"
fi

# ---------------------------------------------------------
# بخش 3: پاکسازی نهایی
# ---------------------------------------------------------
echo -e "${YELLOW}🧹 پاکسازی کش‌ها...\033[0m"
php artisan config:clear
php artisan cache:clear

if [ -f "package.json" ]; then
    npm run build
fi

echo -e "${GREEN}✅ فرآیند نهایی تمام شد.\033[0m"
echo -e "${YELLOW}⚠️ لطفاً کش مرورگر (Ctrl+F5) را پاک کنید.\033[0m"
