🚀 Initial commit: Versão atual do TrackSteel APP

This commit is contained in:
2026-03-18 21:17:53 +00:00
commit bde410c9ad
633 changed files with 108150 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
import { useState, useEffect } from 'react';
import { useAuth } from '@/hooks/useAuth';
import { supabase } from '@/integrations/supabase/client';
interface UserProfile {
full_name: string | null;
email: string | null;
profile_image_url: string | null;
}
export function useUserProfile() {
const { user } = useAuth();
const [profile, setProfile] = useState<UserProfile | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
if (user) {
fetchUserProfile();
} else {
setProfile(null);
setLoading(false);
}
}, [user]);
const fetchUserProfile = async () => {
if (!user) return;
setLoading(true);
try {
const { data, error } = await supabase
.from('profiles')
.select('full_name, email, profile_image_url')
.eq('id', user.id)
.maybeSingle();
if (!error && data) {
setProfile(data);
} else {
// Fallback para dados do usuário auth
setProfile({
full_name: user.user_metadata?.full_name || null,
email: user.email || null,
profile_image_url: null
});
}
} catch (error) {
console.error('Erro ao buscar perfil do usuário:', error);
// Fallback para dados do usuário auth
setProfile({
full_name: user.user_metadata?.full_name || null,
email: user.email || null,
profile_image_url: null
});
} finally {
setLoading(false);
}
};
// Função para extrair o primeiro nome
const getFirstName = () => {
if (!profile?.full_name) return null;
return profile.full_name.split(' ')[0];
};
return {
profile,
loading,
firstName: getFirstName(),
refetch: fetchUserProfile
};
}