// Student ยท Channels โ a locked preview of the coach/admin broadcast channels // (Announcement, All Members, Free Trial Tier, VIP Members, Signal View). // Free/Trial members see every channel listed but locked; VIP members get a // read-only viewer. Boardroom is coach/admin-internal and never shown here. // Exposes window.ChannelsPanel({client, isVIP, onNeedVip}). (function(){ const { useState, useEffect } = React; const CH_LIST=[ {key:'announcement',label:'Announcement',icon:'๐ฃ',desc:'Broadcasts from your coaches',bg:'linear-gradient(135deg,#fbbf24,#b45309)',fg:'#1a1303'}, {key:'broadcast:all',label:'All Members',icon:'๐',desc:'Community room for every student & staff',bg:'linear-gradient(135deg,#a5b4fc,#4338ca)',fg:'#0d0f2b'}, {key:'broadcast:trial',label:'Free Trial Tier',icon:'๐ฑ',desc:'Space for trial members',bg:'linear-gradient(135deg,#cbd5e1,#64748b)',fg:'#10151f'}, {key:'broadcast:vip',label:'VIP Members',icon:'๐',desc:'VIP-only room with your coaches',bg:'linear-gradient(135deg,#f5d97a,#c79a2e)',fg:'#1a1303'}, {key:'signalview',label:'Signal View',icon:'๐ก',desc:'Live trade signal feed',bg:'linear-gradient(135deg,#38bdf8,#0369a1)',fg:'#04141f'}, ]; const fmtTime = d => new Date(d).toLocaleString(undefined,{month:'short',day:'numeric',hour:'2-digit',minute:'2-digit'}); function ChannelViewer({client,ch,onClose}){ const [rows,setRows]=useState(null); useEffect(()=>{ let stop=false; async function load(){ if(stop) return; if(ch.key==='signalview'){ const { data } = await client.from('signals').select('*').order('created_at',{ascending:false}).limit(30); setRows(data||[]); } else if(ch.key==='announcement'){ const { data } = await client.from('announcements').select('*').eq('active',true).order('created_at',{ascending:false}); setRows(data||[]); } else { const { data } = await client.from('chat_messages').select('*').eq('thread_key',ch.key).eq('deleted',false).order('created_at',{ascending:false}).limit(30); setRows(data||[]); } } load(); const iv=setInterval(load,8000); return ()=>{ stop=true; clearInterval(iv); }; },[ch.key]); return
Nothing here yet.
} {ch.key==='signalview' && (rows||[]).map(r=>{ const dc=r.direction==='buy'?'var(--green)':'var(--red)'; return{isVIP ? 'Browse the community rooms your coaches use.' : 'A look at the community rooms \u2014 unlock with VIP to view them.'}