import { useState, useRuntimeConfig } from '#imports'

export interface Profile {
  id: string
  firstName: string
  lastName: string
  email?: string | null
  isActive?: boolean
  hasPassword?: boolean
  roles?: string[]
  [key: string]: unknown
}

const buildUrl = (path: string): string => {
  const config = useRuntimeConfig()
  const base = (config.public.apiBaseUrl as string)?.replace(/\/$/, '') || ''
  return `${base}${path}`
}

export function useProfiles() {
  const profiles = useState<Profile[]>('profiles:list', () => [])
  const loadingProfiles = useState<boolean>('profiles:loading', () => false)
  const profilesLoaded = useState<boolean>('profiles:loaded', () => false)

  const fetchProfiles = async (): Promise<Profile[]> => {
    loadingProfiles.value = true
    try {
      profiles.value = await $fetch<Profile[]>(buildUrl('/session/profiles'), {
        method: 'GET',
        credentials: 'include',
      })
      profilesLoaded.value = true
    } catch (error) {
      console.error('Erreur lors du chargement des profils', error)
      profiles.value = []
      profilesLoaded.value = false
    } finally {
      loadingProfiles.value = false
    }
    return profiles.value
  }

  return {
    profiles,
    loadingProfiles,
    profilesLoaded,
    fetchProfiles,
  }
}
