import { Icon } from '@iconify/react';
import { Divider } from 'antd';
import { loginWithEmail, t, useAsyncFn } from 'tailchat-shared';
import React, { useCallback, useState } from 'react';
import { Spinner } from '../../components/Spinner';
import { string } from 'yup';
import { useHistory } from 'react-router';
import { setUserJWT } from '../../utils/jwt-helper';
import { setGlobalUserLoginInfo } from '../../utils/user-helper';
/**
* TODO:
* 第三方登录
*/
const OAuthLoginView: React.FC = React.memo(() => {
return (
<>
或
>
);
});
OAuthLoginView.displayName = 'OAuthLoginView';
/**
* 登录视图
*/
export const LoginView: React.FC = React.memo(() => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const history = useHistory();
const [{ loading, error }, handleLogin] = useAsyncFn(async () => {
await string()
.email('邮箱格式不正确')
.required('邮箱不能为空')
.validate(email);
await string()
.min(6, '密码不能低于6位')
.required('密码不能为空')
.validate(password);
const data = await loginWithEmail(email, password);
setGlobalUserLoginInfo(data);
await setUserJWT(data.token);
history.push('/main');
}, [email, password, history]);
const toRegisterView = useCallback(() => {
history.push('/entry/register');
}, [history]);
return (
登录 Tail Chat
{error &&
{error.message}
}
);
});
LoginView.displayName = 'LoginView';