export function pushSessionToSW(baseUrl?: string, accessToken?: string, userId?: string) { if (!('serviceWorker' in navigator)) return; if (!navigator.serviceWorker.controller) return; navigator.serviceWorker.controller.postMessage({ type: 'setSession', accessToken, baseUrl, userId, }); } /** * Resolves once media requests can carry the session: immediately-ish when a * service worker already controls the page, otherwise when one takes control * (first visit / just updated) or after `timeoutMs`. Used to retry a media * load that raced the worker's activation and went out without a token. */ export function whenMediaAuthReady(timeoutMs = 3000): Promise { return new Promise((resolve) => { const sw = 'serviceWorker' in navigator ? navigator.serviceWorker : undefined; if (!sw || sw.controller) { window.setTimeout(resolve, 500); return; } const done = () => { sw.removeEventListener('controllerchange', done); resolve(); }; sw.addEventListener('controllerchange', done); window.setTimeout(done, timeoutMs); }); }