Files
TheGame/packages/web/lib/hooks.ts
dan13ram bf5fa29f8a profile setup flow clean up (#167)
* fixed update token on address change

* fetching already set profile data in setup flow

* select skills colors

* showing more data on player tile

* rename variables
2020-10-23 11:03:31 -06:00

38 lines
1.0 KiB
TypeScript

import { Web3Context } from 'contexts/Web3Context';
import { useGetMeQuery } from 'graphql/autogen/types';
import { useRouter } from 'next/router';
import { useContext, useEffect } from 'react';
export const useWeb3 = () => useContext(Web3Context);
type UseUserOpts = {
redirectTo?: string;
redirectIfFound?: boolean;
};
export const useUser = ({ redirectTo, redirectIfFound }: UseUserOpts = {}) => {
const { authToken } = useWeb3();
const router = useRouter();
const [{ data, error, fetching }] = useGetMeQuery({
pause: !authToken,
});
const user = data?.me[0];
useEffect(() => {
if (!redirectTo || !user) return;
if (
// If redirectTo is set, redirect if the user was not found.
(redirectTo && !redirectIfFound && !user) ||
// If redirectIfFound is also set, redirect if the user was found
(redirectIfFound && user)
) {
router.push(redirectTo);
}
}, [router, user, redirectIfFound, redirectTo]);
return { user: error ? null : user, fetching };
};