all repos — caroster @ 4a0142c40fa8f7d43889465908667617995be6bc

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

app/src/hooks/useProfile.js (view raw)

 1import {useState, useEffect} from 'react';
 2import {useStrapi, useAuth} from 'strapi-react-context';
 3
 4export default () => {
 5  const strapi = useStrapi();
 6  const {token, authState} = useAuth();
 7  const [profile, setProfile] = useState();
 8
 9  useEffect(() => {
10    const getProfile = async () => {
11      try {
12        const fetchedProfile = await strapi.services.users.findOne('me');
13        setProfile(fetchedProfile);
14      } catch (error) {
15        console.error(error);
16        setProfile(null);
17      }
18    };
19    if (authState) getProfile();
20    else setProfile(null);
21  }, [authState, strapi.services.users]);
22
23  const addEvent = async event => {
24    try {
25      if (!profile)
26        throw new Error(`Can't add event to logged user: profile empty`);
27      if (!profile?.events?.some(({id}) => id === event.id))
28        await strapi.services.users.update('me', {
29          events: [...profile.events, event.id],
30        });
31    } catch (error) {
32      console.error(error);
33    }
34  };
35
36  return {
37    profile,
38    addEvent,
39    connected: !!token,
40    user: authState?.user,
41    isReady: typeof profile !== 'undefined',
42  };
43};