← back to Bubbesblock

public/events.html

35 lines

<!DOCTYPE html>
<html lang="en"><head>
<meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BubbesBlock — Block Events</title><link rel="stylesheet" href="/styles.css" />
</head><body>
<div id="hdr"></div>
<div class="wrap"><div id="left"></div><main class="col-center" id="main"></main><div id="right"></div></div>
<script>window.__bbAutoInit = false;</script>
<script src="/chrome.js"></script><script src="/app.js"></script>
<script>
function tile(e){
  return `<div class="tile" data-ev="${e.id}">
    <span class="lg" style="background:var(--green)">${e.emoji||'📅'}</span>
    <div class="main"><b>${e.title}</b><div class="meta2">${e.when_label} · ${e.location} · <span class="going">${e.going} going</span></div>
      <div class="meta2" style="margin-top:4px">${e.body||''}</div></div>
    <div class="act"><button class="${e.youGoing?'on':''}" data-ev-btn="${e.id}">${e.youGoing?'Going ✓':'RSVP'}</button></div>
  </div>`;
}
Promise.all([fetch('/api/me',{credentials:'same-origin'}).then(r=>r.json()), fetch('/api/events',{credentials:'same-origin'}).then(r=>r.json())]).then(([m,d])=>{
  document.getElementById('hdr').innerHTML=topbar(m.me);
  document.getElementById('left').innerHTML=leftRail(m.me);
  document.getElementById('right').innerHTML=rightRail(m.me);
  document.getElementById('main').innerHTML='<div class="listhd">🎉 Block Events</div>'+(d.events||[]).map(tile).join('');
  BB.init();
});
document.addEventListener('click', async e=>{
  const b=e.target.closest('[data-ev-btn]'); if(!b) return;
  if(!(await BB.ensureAuth())) return;
  try{ const r=await BB.api.post(`/api/events/${b.dataset.evBtn}/rsvp`,{});
    b.classList.toggle('on',r.going); b.textContent=r.going?'Going ✓':'RSVP';
    const g=b.closest('.tile').querySelector('.going'); if(g) g.textContent=r.count+' going';
  }catch{ BB.toast('Try again'); }
});
</script></body></html>