Spaces:
Sleeping
Sleeping
File size: 984 Bytes
7ff860b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import { useEffect, useState, useCallback } from "react";
import { supabase } from "@/integrations/supabase/client";
import { useAuth } from "@/contexts/AuthContext";
export interface Profile {
id: string;
username: string;
total_xp: number;
level: number;
best_productivity: number;
best_focus_score: number;
sessions_count: number;
}
export function useProfile() {
const { user } = useAuth();
const [profile, setProfile] = useState<Profile | null>(null);
const [loading, setLoading] = useState(true);
const fetchProfile = useCallback(async () => {
if (!user) {
setProfile(null);
setLoading(false);
return;
}
const { data } = await supabase
.from("profiles")
.select("*")
.eq("id", user.id)
.maybeSingle();
setProfile(data as Profile | null);
setLoading(false);
}, [user]);
useEffect(() => {
fetchProfile();
}, [fetchProfile]);
return { profile, loading, refetch: fetchProfile };
}
|