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();
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 }, [data]);
18
19 // // TODO is useless ?
20 // const addEvent = async event => {
21 // try {
22 // if (!profile)
23 // throw new Error(`Can't add event to logged user: profile empty`);
24 // if (!profile?.events?.some(({id}) => id === event.id))
25 // await strapi.services.users.update('me', {
26 // events: [...profile.events, event.id],
27 // });
28 // } catch (error) {
29 // console.error(error);
30 // }
31 // };
32
33 return {
34 profile,
35 // addEvent,
36 connected: !!token,
37 user: user,
38 isReady: typeof profile !== 'undefined',
39 };
40};
41
42export default useProfile;