// Live data for the marketing page — real published rooms, never mock ones.
// Reads the same anon `explore_feed` RPC the app's Explore page uses. If the
// fetch fails, a snapshot of the same rooms (taken Sep 7 2026) fills in so the
// page never shows blanks. Counts always come from the live feed or are omitted.
const MR_SUPA = 'https://pyjijdwjjhadhwipuumo.supabase.co';
const MR_KEY  = 'sb_publishable_dyeagpT9-loV_0oQIwoYAw_vEyPcYrQ'; // publishable (public) key

// Featured on the homepage — one room per contributor persona, all real and published.
const MR_FEATURED = [
  'the-record-hour-sam9r1',
  'montmartre-windows-open-zoe5m9',
  'boots-off-hands-full-ana6b2',
  'the-glasshouse-after-dark-bea4g7',
  'the-getting-ready-room-has-rules-nel8v3',
  'lights-off-cases-lit-mina7d4',
  'every-bin-has-a-label-lb3k7',
  'the-11-pm-shift-jt4n2',
];
const MR_WIDE = { 'the-record-hour-sam9r1':1, 'the-11-pm-shift-jt4n2':1 };

const MR_SNAPSHOT = [
  { slug:'the-record-hour-sam9r1', title:'The record hour', owner_handle:'sam', room_type:'Living', item_count:8, background_image_url:'https://myrooms.design/rooms/sam-record-hour.jpg' },
  { slug:'montmartre-windows-open-zoe5m9', title:'Montmartre, windows open', owner_handle:'zoe', room_type:'Bedroom', item_count:8, background_image_url:'https://myrooms.design/rooms/zoe-montmartre.jpg' },
  { slug:'boots-off-hands-full-ana6b2', title:'Boots off, hands full', owner_handle:'ana', room_type:'Kitchen', item_count:8, background_image_url:'https://myrooms.design/rooms/ana-boot-room.jpg' },
  { slug:'the-glasshouse-after-dark-bea4g7', title:'The Glasshouse After Dark', owner_handle:'bea', room_type:'Living', item_count:8, background_image_url:'https://myrooms.design/rooms/bea-glasshouse.jpg' },
  { slug:'the-getting-ready-room-has-rules-nel8v3', title:'The getting-ready room has rules', owner_handle:'nelly', room_type:'Bedroom', item_count:8, background_image_url:'https://myrooms.design/rooms/nelly-dressing-room.jpg' },
  { slug:'lights-off-cases-lit-mina7d4', title:'Lights off, cases lit', owner_handle:'mina', room_type:'Bedroom', item_count:8, background_image_url:'https://myrooms.design/rooms/mina-cases-lit.jpg' },
  { slug:'every-bin-has-a-label-lb3k7', title:'Every bin has a label', owner_handle:'rebecca', room_type:'Playroom', item_count:10, background_image_url:'https://myrooms.design/rooms/rebecca-study-nook.jpg' },
  { slug:'the-11-pm-shift-jt4n2', title:'The 11 PM shift', owner_handle:'jt', room_type:'Office', item_count:6, background_image_url:'https://myrooms.design/rooms/jt-night-desk.jpg' },
];

let mrFeedPromise = null;
function mrFeed(){
  if(!mrFeedPromise){
    mrFeedPromise = fetch(MR_SUPA + '/rest/v1/rpc/explore_feed', {
      method:'POST', headers:{ apikey: MR_KEY, 'Content-Type':'application/json' }, body:'{}',
    })
      .then(r => r.ok ? r.json() : Promise.reject(r.status))
      .then(rows => (Array.isArray(rows) && rows.length) ? rows : Promise.reject('empty'))
      .catch(() => null);
  }
  return mrFeedPromise;
}
// null while loading, false if the fetch failed, array when live.
function useMrFeed(){
  const [feed, setFeed] = React.useState(null);
  React.useEffect(() => {
    let on = true;
    mrFeed().then(f => { if(on) setFeed(f === null ? false : f); });
    return () => { on = false; };
  }, []);
  return feed;
}
// The featured rooms, live when possible, snapshot otherwise. Order is fixed.
function mrFeatured(feed){
  const src = Array.isArray(feed) ? feed : MR_SNAPSHOT;
  return MR_FEATURED
    .map(slug => src.find(r => r.slug === slug) || MR_SNAPSHOT.find(r => r.slug === slug))
    .filter(Boolean);
}
window.MR = { FEATURED: MR_FEATURED, WIDE: MR_WIDE, SNAPSHOT: MR_SNAPSHOT, feed: mrFeed, useFeed: useMrFeed, featured: mrFeatured };
