diff --git a/web/src/hooks/authHook.ts b/web/src/hooks/authHook.ts index 7461d6f5552b9f8ca9b626006d2fc5b840116131..75b2d26f46c7a3509a2bd46cb05c6e94bd7a70aa 100644 --- a/web/src/hooks/authHook.ts +++ b/web/src/hooks/authHook.ts @@ -1,15 +1,8 @@ import authorizationUtil from '@/utils/authorizationUtil'; -import { useMemo, useState } from 'react'; +import { message } from 'antd'; +import { useEffect, useMemo, useState } from 'react'; import { useNavigate, useSearchParams } from 'umi'; -export const useAuth = () => { - const [isLogin, setIsLogin] = useState( - () => !!authorizationUtil.getAuthorization(), - ); - - return { isLogin }; -}; - export const useLoginWithGithub = () => { const [currentQueryParameters, setSearchParams] = useSearchParams(); const error = currentQueryParameters.get('error'); @@ -20,6 +13,7 @@ export const useLoginWithGithub = () => { const navigate = useNavigate(); if (error) { + message.error(error); navigate('/login'); newQueryParameters.delete('error'); setSearchParams(newQueryParameters); @@ -33,4 +27,16 @@ export const useLoginWithGithub = () => { newQueryParameters.delete('auth'); setSearchParams(newQueryParameters); } + return auth; +}; + +export const useAuth = () => { + const auth = useLoginWithGithub(); + const [isLogin, setIsLogin] = useState(true); + + useEffect(() => { + setIsLogin(!!auth || !!authorizationUtil.getAuthorization()); + }, [auth]); + + return { isLogin }; }; diff --git a/web/src/layouts/index.tsx b/web/src/layouts/index.tsx index f915e19b636541deaea8ab1e4111f51a724a23ca..ded00fa81b59f1f8c92dc79ed9e4c7bd2d32ed35 100644 --- a/web/src/layouts/index.tsx +++ b/web/src/layouts/index.tsx @@ -4,7 +4,6 @@ import { Outlet } from 'umi'; import '../locales/config'; import Header from './components/header'; -import { useLoginWithGithub } from '@/hooks/authHook'; import styles from './index.less'; const { Content } = Layout; @@ -14,8 +13,6 @@ const App: React.FC = () => { token: { colorBgContainer, borderRadiusLG }, } = theme.useToken(); - useLoginWithGithub(); - return ( <Layout className={styles.layout}> <Layout>