import{n as e}from"./chunk-B3K2TuZy.js";import{p as t,t as n}from"./jsx-runtime-C2-Nj7wv.js";import{g as r,m as i,n as a,o,p as s}from"./apiFetch-C5jBrj9m.js";import{t as c}from"./authService-CL3J12W9.js";import{t as l}from"./userService-C40w6R3r.js";var u=i(),d=5e3;async function f(){let e=await a(`${u}/push/public-key`,{withAuth:!1});return{enabled:!!e?.enabled,public_key:e?.public_key??``}}async function p(e){await a(`${u}/users/me/push-subscriptions`,{method:`POST`,body:e})}async function m(e,t){await a(`${u}/users/me/push-subscriptions`,{method:`DELETE`,body:{endpoint:e},timeout:t})}async function h(){return(await a(`${u}/users/me/push-subscriptions`))?.endpoints??[]}async function g(){try{if(!(`serviceWorker`in navigator))return;let e=await(await navigator.serviceWorker.getRegistration())?.pushManager?.getSubscription();if(!e)return;await m(e.endpoint,d).catch(()=>{}),await e.unsubscribe()}catch{}}var _=e(t()),v=n(),y=(0,_.createContext)(void 0),b=async(e=3,t=500)=>{for(let n=1;n<=e;n++)try{return await l.getCurrentUserProfile()}catch(r){if(n===e)throw r;await new Promise(e=>setTimeout(e,t))}throw Error(`unreachable`)},x=({children:e})=>{let[t,n]=(0,_.useState)(r.get(`JWT-Reload-airsoft`)||null),[i,a]=(0,_.useState)(null),[u,d]=(0,_.useState)(!0),f=!!t,p=_.useRef(!1);return(0,_.useEffect)(()=>{(async()=>{if(!p.current)if(t&&!i){p.current=!0,d(!0);try{a(await b())}catch{try{a(l.createBasicProfileFromToken()),setTimeout(async()=>{try{let e=await l.getCurrentUserProfile();(e?.firstname||e?.pseudonyme)&&a(e)}catch{}},3e3)}catch(e){console.error(`Échec du chargement automatique du profil:`,e),n(null),r.remove(`JWT-Reload-airsoft`)}}finally{d(!1)}}else d(!1)})()},[t]),(0,_.useEffect)(()=>{if(!f)return;let e=setInterval(async()=>{try{let e=await c.refreshToken();e&&n(e)}catch{n(null),a(null),r.remove(s.COOKIE_NAME),r.remove(s.REFRESH_COOKIE_NAME),o.reset(),p.current=!1}},s.REFRESH_INTERVAL);return()=>clearInterval(e)},[f]),(0,_.useEffect)(()=>{let e=()=>{n(null),a(null),r.remove(s.COOKIE_NAME),r.remove(s.REFRESH_COOKIE_NAME),o.reset(),p.current=!1};return window.addEventListener(`auth:expired`,e),()=>window.removeEventListener(`auth:expired`,e)},[]),(0,v.jsx)(y.Provider,{value:{isAuthenticated:f,token:t,user:i,isLoading:u,login:async e=>{try{let t=await c.login(e);if(t.requires_2fa)return t;if(!t.access_token)throw Error(`Token d'accès manquant dans la réponse du serveur`);return p.current=!0,n(t.access_token),r.set(`JWT-Reload-airsoft`,t.access_token,{expires:7,secure:!0,sameSite:`strict`}),await b().then(e=>a(e)).catch(()=>{try{a(l.createBasicProfileFromToken())}catch{a({firstname:t.firstname||``,lastname:t.lastname||``,pseudonyme:t.pseudonyme||t.email?.split(`@`)[0]||`utilisateur`,email:t.email||e.email,role:t.roles&&t.roles.length>0?t.roles[0]:``,avatar_url:null,phone_number:null,preferences:{notifications:!0,language:`fr`}})}}),t}catch(e){throw console.error(`Échec de la connexion :`,e),n(null),a(null),r.remove(`JWT-Reload-airsoft`),e}},register:async e=>{try{await c.register(e)}catch(e){throw console.error(`Échec de l'inscription :`,e),e}},logout:async()=>{await g();try{await c.logout()}catch(e){console.error(`Erreur lors de la déconnexion:`,e)}finally{n(null),a(null),r.remove(`JWT-Reload-airsoft`),o.reset()}},refreshUserProfile:async()=>{if(t)try{a(await l.getCurrentUserProfile())}catch(e){throw console.error(`Erreur lors du rafraîchissement du profil:`,e),e}},updateUserAvatar:e=>{a(t=>t&&{...t,avatar_url:e})},updateBannerUrl:e=>{a(t=>t&&{...t,preferences:{...t.preferences,banner_url:e}})}},children:e})},S=()=>{let e=(0,_.useContext)(y);if(e===void 0)throw Error(`useAuth doit être utilisé à l'intérieur d'un AuthProvider`);return e};export{h as a,f as i,S as n,p as o,m as r,x as t};