import sys, time, json
sys.path.insert(0, "/tmp/amdwork")
from cdp import list_pages, attach, http_get

LOG = "/tmp/amdwork/launch_hook.log"
def log(*a):
    with open(LOG, "a") as f:
        f.write(" ".join(str(x) for x in a) + "\n")
open(LOG, "w").close()

pages = list_pages()
t = None
for p in pages:
    if "launch-app" in (p.get("url") or "") or "advancedmd" in (p.get("url") or ""):
        t = p; break
t = t or pages[0]
pg = attach(t)
pg.enable()

# Hook window.open to record attempted URLs instead of being blocked
pg.eval("""
(function(){
  if(window.__openHooked) return;
  window.__openHooked = true;
  window.__openCalls = [];
  var orig = window.open;
  window.open = function(u, n, f){
    try{ window.__openCalls.push(String(u)); }catch(e){}
    return orig ? orig.apply(window, arguments) : null;
  };
})()
""")
log("hook installed")

# Close the compatibility modal
r = pg.eval("""(function(){
  var b=Array.from(document.querySelectorAll('button')).find(function(x){return x.innerText.trim().toLowerCase()==='close';});
  if(b){b.click(); return 'CLOSED';} return 'NOCLOSE';
})()""")
log("close modal:", r)
time.sleep(2)

# Look for any launch button / link now visible
log("AFTER URL:", pg.eval("location.href"))
log("BODY:", json.dumps((pg.eval("document.body.innerText") or "")[:800]))
log("ELEMENTS:", pg.eval("""(function(){
  function vis(e){var r=e.getBoundingClientRect();return r.width>0&&r.height>0;}
  return JSON.stringify(Array.from(document.querySelectorAll('a,button,input')).filter(vis).map(function(e){return {tag:e.tagName.toLowerCase(),txt:(e.innerText||'').trim().slice(0,40),href:e.href||'',id:e.id};}));
})()"""))

# Re-trigger launch by reloading launch-app route
pg.navigate("https://static-100.advancedmd.com/apps/login/#/launch-app")
time.sleep(6)
log("RELOADED URL:", pg.eval("location.href"))
log("openCalls:", pg.eval("JSON.stringify(window.__openCalls||[])"))
log("BODY2:", json.dumps((pg.eval("document.body.innerText") or "")[:800]))

# list all targets (a popup would appear here)
log("ALLTARGETS:")
for p in http_get("/json"):
    log("  ", p.get("type"), p.get("url"))

pg.screenshot("/tmp/amdwork/launch-hook.png")
log("DONE_LAUNCHHOOK")
pg.close()
