frontend/hooks/useProfile.js (view raw)
1import {useState, useEffect} from 'react';
2import useAuthStore from '../stores/useAuthStore';
3import {useProfileLazyQuery} from '../generated/graphql';
4
5const useProfile = () => {
6 const token = useAuthStore(s => s.token);
7 const user = useAuthStore(s => s.user);
8 const [profile, setProfile] = useState(null);
9 const [fetchProfile, {data}] = useProfileLazyQuery();
10
11 useEffect(() => {
12 if (token) {
13 fetchProfile();
14 }
15 }, [token]);
16
17 useEffect(() => {
18 if (data) setProfile(data.me?.profile);
19 }, [data]);
20
21 return {
22 profile,
23 connected: !!token,
24 user: user,
25 isReady: typeof profile !== 'undefined',
26 };
27};
28
29export default useProfile;