import { rsaPsw } from '@/utils'; import { Button, Checkbox, Form, Input } from 'antd'; import { useEffect, useState } from 'react'; import { Icon, useDispatch, useNavigate, useSelector } from 'umi'; import styles from './index.less'; const Login = () => { const [title, setTitle] = useState('login'); let navigate = useNavigate(); const dispatch = useDispatch(); const effectsLoading: any = useSelector( // TODO: Type needs to be improved (state) => state.loading.effects, ); // TODO: When the server address request is not accessible, the value of dva-loading always remains true. const signLoading = effectsLoading['loginModel/login'] || effectsLoading['loginModel/register']; const changeTitle = () => { setTitle((title) => (title === 'login' ? 'register' : 'login')); }; const [form] = Form.useForm(); const [checkNick, setCheckNick] = useState(false); useEffect(() => { form.validateFields(['nickname']); }, [checkNick, form]); const onCheck = async () => { try { const params = await form.validateFields(); var rsaPassWord = rsaPsw(params.password); if (title === 'login') { const retcode = await dispatch({ type: 'loginModel/login', payload: { email: params.email, password: rsaPassWord, }, }); if (retcode === 0) { navigate('/knowledge'); } } else { // TODO: Type needs to be improved const retcode = await dispatch({ type: 'loginModel/register', payload: { nickname: params.nickname, email: params.email, password: rsaPassWord, }, }); if (retcode === 0) { setTitle('login'); } } } catch (errorInfo) { console.log('Failed:', errorInfo); } }; const formItemLayout = { labelCol: { span: 6 }, // wrapperCol: { span: 8 }, }; const toGoogle = () => { window.location.href = 'https://github.com/login/oauth/authorize?scope=user:email&client_id=302129228f0d96055bee'; }; return (
{title === 'login' ? 'Sign in' : 'Create an account'}
{title === 'login' ? 'We’re so excited to see you again!' : 'Glad to have you on board!'}
{title === 'register' && ( )} {title === 'login' && ( Remember me )}
{' '} {title === 'login' && (
Don’t have an account?
)} {title === 'register' && (
Already have an account?
)}
{title === 'login' && ( <> {/* */} )}
); }; export default Login;