00a3c8ca2b
* Change to using arrow functions Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Add lint rule --------- Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
30 lines
906 B
TypeScript
30 lines
906 B
TypeScript
import { useEffect, useState } from 'react';
|
|
import { useRecoilState } from 'recoil';
|
|
|
|
import { currentUserState } from '@/auth/states/currentUserState';
|
|
import { useGetCurrentUserQuery } from '~/generated/graphql';
|
|
|
|
export const UserProvider = ({ children }: React.PropsWithChildren) => {
|
|
const [, setCurrentUser] = useRecoilState(currentUserState);
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
|
|
const { data, loading } = useGetCurrentUserQuery();
|
|
|
|
useEffect(() => {
|
|
if (!loading) {
|
|
setIsLoading(false);
|
|
}
|
|
if (data?.currentUser?.workspaceMember?.settings) {
|
|
setCurrentUser({
|
|
...data.currentUser,
|
|
workspaceMember: {
|
|
...data.currentUser.workspaceMember,
|
|
settings: data.currentUser.workspaceMember.settings,
|
|
},
|
|
});
|
|
}
|
|
}, [setCurrentUser, data, isLoading, loading]);
|
|
|
|
return isLoading ? <></> : <>{children}</>;
|
|
};
|