from playwright.sync_api import sync_playwright
from config import Config

def run_topup(player_id: str, category: str) -> dict:
    """
    يفتح gold.razer.com، يسجل دخول، ويشحن Free Fire
    يرجع {"success": True} أو {"success": False, "error": "..."}
    """
    try:
        with sync_playwright() as p:
            browser = p.chromium.launch(
                headless=True,
                args=["--no-sandbox", "--disable-dev-shm-usage"]
            )
            context = browser.new_context(
                user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
            )
            page = context.new_page()

            # ── 1. تسجيل الدخول ──────────────────────────────
            page.goto("https://gold.razer.com/login", wait_until="networkidle")
            page.fill('input[type="email"]', Config.RAZER_EMAIL)
            page.fill('input[type="password"]', Config.RAZER_PASSWORD)
            page.click('button[type="submit"]')
            page.wait_for_load_state("networkidle", timeout=20000)

            # ── 2. صفحة Free Fire ────────────────────────────
            page.goto("https://gold.razer.com/id/en/gold/topup/free-fire", wait_until="networkidle")

            # ── 3. إدخال Player ID ───────────────────────────
            page.fill('#userId', player_id)
            page.click('#checkUser')  # زر التحقق من اللاعب
            page.wait_for_selector('.player-name', timeout=10000)  # انتظر ظهور اسم اللاعب

            # ── 4. اختيار الفئة ──────────────────────────────
            page.click(f'[data-denomination="{category}"]')

            # ── 5. تأكيد الشراء ──────────────────────────────
            page.click('#topup-btn')
            page.wait_for_selector('.topup-success', timeout=20000)

            browser.close()
            return {"success": True}

    except Exception as e:
        return {"success": False, "error": str(e)}
