function usePlatformAccess(user,baseUrl){ const [status,setStatus]=React.useState(null),[error,setError]=React.useState(''),[retry,setRetry]=React.useState(0); React.useEffect(()=>{ let live=true,busy=false,controller;setStatus(null);setError(''); async function check(){ if(busy)return;busy=true;controller=new AbortController();const timeout=setTimeout(()=>controller.abort(),12000); try{ const token=user&&window.ProgressSync?.getSession(user.id); const res=await fetch(baseUrl+'/platform/status',{cache:'no-store',headers:{Authorization:'Bearer '+(token||'')},signal:controller.signal}); if(res.status===404)throw Error('La API conectada todavía no tiene esta actualización. Live Server solo actualiza la página; falta publicar la API.'); const data=await res.json(); if(!res.ok||data.apiVersion!==window.PlatformRelease.apiVersion)throw Error('La versión de la API no coincide. Publica también el paquete de la API y vuelve a intentar.'); if(live){setStatus({...data,receivedAt:Date.now()});setError('');} }catch(e){if(live){setStatus(null);setError(e.message==='Failed to fetch'?'No se pudo conectar con la API. Verifica que esté publicada y funcionando.':e.message);}} finally{busy=false;clearTimeout(timeout);} } check();const timer=setInterval(check,15000);window.addEventListener('focus',check); return()=>{live=false;controller.abort();clearInterval(timer);window.removeEventListener('focus',check);}; },[user?.id,user?.previewAllUnlocked,baseUrl,retry]); return {status,error,retry:()=>setRetry(n=>n+1),allowed:Boolean(status&&!status.maintenance&&(!user?.previewAllUnlocked||status.developer))}; } function PlatformMaintenance({status}){ const [now,setNow]=React.useState(Date.now()); React.useEffect(()=>{const timer=setInterval(()=>setNow(Date.now()),1000);return()=>clearInterval(timer);},[]); const seconds=Math.max(0,Math.ceil((Date.parse(status.opensAt)-(Date.parse(status.serverTime)+now-status.receivedAt))/1000)); const days=Math.floor(seconds/86400),hours=Math.floor(seconds%86400/3600),minutes=Math.floor(seconds%3600/60); return

Trabajando en una súper actualización

Reestrena el viernes

Viernes 2 de octubre, 12:00 a. m. · Hora de Ciudad de México

{[[days,'días'],[hours,'horas'],[minutes,'minutos'],[seconds%60,'segundos']].map(([n,label])=>{String(n).padStart(2,'0')}{label})}
{seconds===0&&

Verificando la reapertura…

}

Puedes registrarte o iniciar sesión. Tu acceso se habilitará al reestreno.

; }