import{n as e}from"./rolldown-runtime-DF2fYuay.js";import{l as t}from"./vendor-map-UawGledW.js";import{t as n}from"./vendor-react-Botiei7A.js";import{d as r,i,m as a}from"./apiFetch-C4rLkcBG.js";import{t as o}from"./authService-BJ8-22DB.js";import{t as s}from"./userService-D8W-jAMZ.js";var c=e(t()),l=n(),u=(0,c.createContext)(void 0),d=async(e=3,t=500)=>{for(let n=1;n<=e;n++)try{return await s.getCurrentUserProfile()}catch(r){if(n===e)throw r;await new Promise(e=>setTimeout(e,t))}throw Error(`unreachable`)},f=({children:e})=>{let[t,n]=(0,c.useState)(a.get(`JWT-Reload-airsoft`)||null),[f,p]=(0,c.useState)(null),[m,h]=(0,c.useState)(!0),g=!!t,_=c.useRef(!1);return(0,c.useEffect)(()=>{(async()=>{if(!_.current)if(t&&!f){_.current=!0,h(!0);try{p(await d())}catch{try{p(s.createBasicProfileFromToken()),setTimeout(async()=>{try{let e=await s.getCurrentUserProfile();(e?.firstname||e?.pseudonyme)&&p(e)}catch{}},3e3)}catch(e){console.error(`Échec du chargement automatique du profil:`,e),n(null),a.remove(`JWT-Reload-airsoft`)}}finally{h(!1)}}else h(!1)})()},[t]),(0,c.useEffect)(()=>{if(!g)return;let e=setInterval(async()=>{try{let e=await o.refreshToken();e&&n(e)}catch{n(null),p(null),a.remove(r.COOKIE_NAME),a.remove(r.REFRESH_COOKIE_NAME),i.reset(),_.current=!1}},r.REFRESH_INTERVAL);return()=>clearInterval(e)},[g]),(0,c.useEffect)(()=>{let e=()=>{n(null),p(null),a.remove(r.COOKIE_NAME),a.remove(r.REFRESH_COOKIE_NAME),i.reset(),_.current=!1};return window.addEventListener(`auth:expired`,e),()=>window.removeEventListener(`auth:expired`,e)},[]),(0,l.jsx)(u.Provider,{value:{isAuthenticated:g,token:t,user:f,isLoading:m,login:async e=>{try{let t=await o.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 _.current=!0,n(t.access_token),a.set(`JWT-Reload-airsoft`,t.access_token,{expires:7,secure:!0,sameSite:`strict`}),await d().then(e=>p(e)).catch(()=>{try{p(s.createBasicProfileFromToken())}catch{p({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),p(null),a.remove(`JWT-Reload-airsoft`),e}},register:async e=>{try{await o.register(e)}catch(e){throw console.error(`Échec de l'inscription :`,e),e}},logout:async()=>{try{await o.logout()}catch(e){console.error(`Erreur lors de la déconnexion:`,e)}finally{n(null),p(null),a.remove(`JWT-Reload-airsoft`),i.reset()}},refreshUserProfile:async()=>{if(t)try{p(await s.getCurrentUserProfile())}catch(e){throw console.error(`Erreur lors du rafraîchissement du profil:`,e),e}},updateUserAvatar:e=>{p(t=>t&&{...t,avatar_url:e})},updateBannerUrl:e=>{p(t=>t&&{...t,preferences:{...t.preferences,banner_url:e}})}},children:e})},p=()=>{let e=(0,c.useContext)(u);if(e===void 0)throw Error(`useAuth doit être utilisé à l'intérieur d'un AuthProvider`);return e};export{p as n,f as t};