"""Debug login to ClickFunnels."""
import asyncio
import json
import sys
sys.stdout.reconfigure(encoding="utf-8")
from playwright.async_api import async_playwright
from pathlib import Path

SCRIPTS_DIR = Path(__file__).parent
COOKIES_FILE = SCRIPTS_DIR / ".course_cookies.json"

LOGIN_PAGE  = "https://kaleanders.clickfunnels.com/login-raio31910526?page_id=31910527&page_key=kyy8t5uqnf4ym1ng&login_redirect=1"
MEMBERS_URL = "https://kaleanders.clickfunnels.com/members-raio"
EMAIL    = "kokimobil35@gmail.com"
PASSWORD = "Korea123.@!@#"

async def test_cookies():
    """Intenta usar cookies guardadas para acceder al curso."""
    if not COOKIES_FILE.exists():
        print("No hay cookies guardadas")
        return False

    cookies = json.loads(COOKIES_FILE.read_text(encoding="utf-8"))
    print(f"Cargando {len(cookies)} cookies guardadas...")

    async with async_playwright() as pw:
        browser = await pw.chromium.launch(headless=True)
        ctx = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36",
        )
        await ctx.add_cookies(cookies)
        page = await ctx.new_page()
        await page.goto(MEMBERS_URL, wait_until="domcontentloaded", timeout=30000)
        await page.wait_for_timeout(3000)
        url = page.url
        print(f"URL despues de navegar: {url}")
        ok = "members" in url
        if ok:
            html = await page.content()
            # Buscar ID de vidalytics
            import re
            m = re.search(r'vidalytics_embed_([A-Za-z0-9_-]+)', html)
            print(f"Vidalytics ID en pagina: {m.group(1) if m else 'NO ENCONTRADO'}")
        await browser.close()
        return ok

async def test_fresh_login():
    """Hace login fresco y verifica acceso."""
    async with async_playwright() as pw:
        browser = await pw.chromium.launch(headless=True)
        ctx = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36",
        )
        page = await ctx.new_page()

        print(f"\nCargando pagina de login...")
        await page.goto(LOGIN_PAGE, wait_until="domcontentloaded", timeout=30000)
        await page.wait_for_timeout(3000)

        # Verificar que el formulario existe
        form = await page.query_selector('#login-form')
        print(f"#login-form encontrado: {form is not None}")

        if form:
            email_input = await page.query_selector('input[name="member[email]"]')
            pass_input  = await page.query_selector('input[name="member[password]"]')
            print(f"Email input: {email_input is not None}")
            print(f"Password input: {pass_input is not None}")

        # Intentar login via JS
        result = await page.evaluate(f"""() => {{
            const f = document.querySelector('#login-form');
            if (!f) return 'NO_FORM';
            const e = f.querySelector('input[name="member[email]"]');
            const p = f.querySelector('input[name="member[password]"]');
            if (!e || !p) return 'NO_INPUTS: e=' + !!e + ' p=' + !!p;
            e.value = "{EMAIL}";
            e.dispatchEvent(new Event('input',{{bubbles:true}}));
            p.value = "{PASSWORD}";
            p.dispatchEvent(new Event('input',{{bubbles:true}}));
            const form = f.querySelector('form');
            if (form) {{ form.submit(); return 'SUBMITTED'; }}
            return 'NO_FORM_TAG';
        }}""")
        print(f"Login JS result: {result}")

        await page.wait_for_timeout(8000)
        url = page.url
        print(f"URL despues del login: {url}")
        ok = "members" in url and "login" not in url
        print(f"Login exitoso: {ok}")

        if ok:
            # Guardar nuevas cookies
            cookies = await ctx.cookies()
            COOKIES_FILE.write_text(json.dumps(cookies, indent=2), encoding="utf-8")
            print(f"Cookies guardadas: {len(cookies)}")

        await browser.close()
        return ok

async def main():
    print("=== Test 1: Cookies guardadas ===")
    ok = await test_cookies()
    print(f"Resultado: {'OK' if ok else 'FALLO'}")

    if not ok:
        print("\n=== Test 2: Login fresco ===")
        ok2 = await test_fresh_login()
        print(f"Resultado: {'OK' if ok2 else 'FALLO'}")

asyncio.run(main())
