all repos — caroster @ 6a629062a8bc34c4d4e65df3f7e8242515460e30

[Octree] Group carpool to your event https://caroster.io

frontend/hooks/useProfile.ts (view raw)

 1import {useState, useEffect} from 'react';
 2import useAuthStore from '../stores/useAuthStore';
 3import {useProfileLazyQuery, ProfileQuery} 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<ProfileQuery['me']['profile']>(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;