
import { useCallback, useState } from "react";
import { supabase } from "@/integrations/supabase/client";
import { parseUserRole } from "@/utils/tripStepMappers";


export interface Profile {
  id: string;
  email: string;
  name: string;
  role: 'planner' | 'traveler';
  has_set_password?: boolean;
}

export function useUserProfile() {
  const [currentUser, setCurrentUser] = useState<Profile | null>(null);

  const loadUserProfile = useCallback(async (userId: string) => {
    console.group('👤 Chargement du profil utilisateur');
    console.info('User ID:', userId);

    try {
      // Utiliser la vue profiles_safe au lieu d'accéder directement à la table profiles
      const { data: profile, error } = await supabase
        .from('profiles_safe')
        .select('*')
        .eq('id', userId)
        .maybeSingle();

      if (error) {
        throw error;
      }

      if (profile) {
        console.info('Profil chargé avec succès:', {
          id: profile.id,
          email: profile.email,
          name: profile.name,
          role: profile.role,
          has_set_password: profile.has_set_password
        });
        setCurrentUser({
          id: profile.id as string,
          email: (profile.email as string) ?? "",
          name: (profile.name as string) ?? "",
          role: parseUserRole(profile.role),
          has_set_password: profile.has_set_password ?? undefined,
        });

      } else {
        console.warn('⚠️ Aucun profil trouvé pour cet ID utilisateur');
      }
    } catch (error) {
      console.group('❌ Erreur de chargement du profil');
      console.error('Détail de l\'erreur:', error);
      console.groupEnd();
    } finally {
      console.groupEnd();
    }
  }, []);

  return {
    currentUser,
    setCurrentUser,
    loadUserProfile
  };
}
