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(undefined);
9 const [fetchProfile, {data}] = useProfileLazyQuery();
10
11 useEffect(() => {
12 if (token) fetchProfile();
13 }, [token]);
14
15 useEffect(() => {
16 if (data) setProfile(data.me?.profile);
17 else setProfile(null);
18 }, [data]);
19
20 return {
21 profile,
22 connected: !!token,
23 user: user,
24 notReady: typeof profile === 'undefined',
25 };
26};
27
28export default useProfile;