import{a as e,d as t,l as n,m as r,n as i,o as a,p as o}from"./apiFetch-C4rLkcBG.js";import{t as s}from"./imageUploadService-C_X9HkPC.js";var c=o();function l(e){if(!e)return null;if(e.startsWith(`data:`))return e;let t=e;if(e.startsWith(`http://localhost:3000/`)){let n=e.replace(`http://localhost:3000`,``);(n.startsWith(`/api/v1/avatars`)||n.startsWith(`/avatars/`))&&(t=`${a.API_GATEWAY.URL}${n}`)}else e.startsWith(`/avatars/`)?t=`${a.API_GATEWAY.URL}/api/v1${e}`:e.startsWith(`/api/v1/avatars`)&&(t=`${a.API_GATEWAY.URL}${e}`);return(t.includes(`/api/v1/avatars`)||t.includes(`/avatars/`))&&!t.includes(`?v=`)&&(t=`${t}?v=${Math.floor(Date.now()/864e5)}`),t}function u(e,t){return{id:e.id||t,firstname:e.firstname||``,lastname:e.lastname||``,pseudonyme:e.pseudonyme||e.pseudoname||``,email:e.email||``,role:e.role||``,avatar_url:l(e.avatar_url||e.profile_picture_url),is_organizer:e.is_organizer??e.isOrganizer??!1,isOrganizer:e.is_organizer??e.isOrganizer??!1,phone_number:e.phone||e.phone_number||null,email_verified:e.email_verified||!1,phone_verified:e.phone_verified||!1,created_at:e.created_at,updated_at:e.updated_at,last_login_at:e.last_login_at||null,auth_type:e.auth_type||`email`,preferences:{...e.preferences,language:e.preferences?.language||`fr`,timezone:e.preferences?.timezone||`Europe/Paris`,email_notifications:e.preferences?.email_notifications??!0,push_notifications:e.preferences?.push_notifications??!0,sms_notifications:e.preferences?.sms_notifications??!1,public_profile:e.preferences?.public_profile??!0,show_real_name:e.preferences?.show_real_name??!1,show_email:e.preferences?.show_email??!1,show_phone:e.preferences?.show_phone??!1}}}var d={getCurrentUserProfile:async()=>{try{let e=d.getUserIDFromToken();if(!e)return d.createBasicProfileFromToken();let n=await i(`${c}/${e}`),a=u(n.user||n,e);if(!a.role)try{let e=r.get(t.COOKIE_NAME);e&&(a.role=JSON.parse(atob(e.split(`.`)[1])).role||``)}catch{}return a}catch{return d.createBasicProfileFromToken()}},getUserIDFromToken:()=>{try{let e=r.get(t.COOKIE_NAME);if(!e)return null;let n=JSON.parse(atob(e.split(`.`)[1]));return n.userID||n.sub||n.user_id||null}catch{return null}},createBasicProfileFromToken:()=>{try{let e=r.get(t.COOKIE_NAME);if(!e)throw Error(`No token`);let n=JSON.parse(atob(e.split(`.`)[1])),i=n.email||n.sub,o=i?.includes(`@`)?i.split(`@`)[0]:null,s=n.role||n.roles?.[0];return{id:n.userID||n.sub||n.user_id||n.id,firstname:n.firstname||n.given_name||n.name?.split(` `)[0]||`Utilisateur`,lastname:n.lastname||n.family_name||n.name?.split(` `).slice(1).join(` `)||``,pseudonyme:n.pseudonyme||n.username||n.preferred_username||o||`utilisateur`,email:i||`user@example.com`,role:s,is_organizer:n.is_organizer??s===`organizer`,isOrganizer:n.is_organizer??s===`organizer`,avatar_url:(()=>{let e=n.picture||n.avatar_url;return e?e.startsWith(`/avatars/`)?`${a.API_GATEWAY.URL}/api/v1${e}`:e:null})(),phone_number:n.phone_number||n.phone||null,preferences:{language:n.locale||`fr`,timezone:`Europe/Paris`,email_notifications:!0,push_notifications:!0,sms_notifications:!1,public_profile:!0,show_real_name:!1,show_email:!1,show_phone:!1}}}catch{return{firstname:`Utilisateur`,lastname:``,pseudonyme:`utilisateur`,email:`user@example.com`,role:`player`,avatar_url:null,phone_number:null,preferences:{language:`fr`,timezone:`Europe/Paris`,email_notifications:!0,push_notifications:!0,sms_notifications:!1,public_profile:!0,show_real_name:!1,show_email:!1,show_phone:!1}}}},updateUserProfile:async e=>{let t=d.getUserIDFromToken();if(!t)throw Error(`Impossible de récupérer l'ID utilisateur`);let n=await i(`${c}/${t}`,{method:`PUT`,body:e});return u(n.user||n)},updateUserRole:async(e,t)=>{await i(`${c}/${e}`,{method:`PUT`,body:{role:t}})},updateUserStatus:async(e,t)=>{await i(`${c}/${e}`,{method:`PUT`,body:{status:t}})},deleteUserById:async e=>{await i(`${c}/${e}`,{method:`DELETE`})},changePassword:async(e,t)=>{let n=d.getUserIDFromToken();if(!n)throw Error(`Impossible de récupérer l'ID utilisateur`);await i(`${c}/${n}/change-password`,{method:`PUT`,body:{current_password:e,new_password:t}})},uploadProfilePicture:async e=>{let t=await s.optimizeImage(e,400,400,.8),n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result.split(`,`)[1]),r.onerror=()=>n(Error(`Erreur lecture fichier`)),r.readAsDataURL(t)}),r=d.getUserIDFromToken();if(!r)throw Error(`Impossible de récupérer l'ID utilisateur`);let o=await i(`${c}/${r}/avatar`,{method:`POST`,body:{avatar_data:n,avatar_filename:t.name}}),l=o.avatar_url||o.url;return l?.startsWith(`/avatars/`)?`${a.API_GATEWAY.URL}/api/v1${l}`:l},deleteProfilePicture:async()=>{await d.updateUserProfile({avatar_url:``})},getUserStats:async()=>i(`${c}/profile/stats`),updateUserPreferences:async e=>{await i(`${c}/profile/preferences`,{method:`PUT`,body:{preferences:e}})},getUserById:async e=>{let t=await i(`${c}/${e}`);return u(t.user||t,e)},getAllUsers:async()=>((await i(`${c}`)).users||[]).map(e=>{let t=e.status;typeof t==`string`&&t.toLowerCase().startsWith(`user_status_`)&&(t=t.toLowerCase().replace(`user_status_`,``));let n=e.is_organizer??e.isOrganizer??!1;return{...u(e),status:t,is_organizer:n,isOrganizer:n}}),deleteAccount:async e=>{let n=d.getUserIDFromToken();if(!n)throw Error(`Impossible de récupérer l'ID utilisateur`);await i(`${c}/${n}`,{method:`DELETE`,body:e?{password:e}:void 0}),r.remove(t.COOKIE_NAME)},createUser:async e=>{let t=await i(`${c}`,{method:`POST`,body:e});return u(t.user||t)},switchToEmail:async t=>{await i(`${n.API_BASE}/auth/switch-to-email`,{method:`PUT`,body:{new_password:t},timeout:e.TIMEOUTS.DEFAULT})}};export{l as n,d as t};