Browse Source

feat: enlarge the size of the next button for uploading files and add locale config to global.ts (#195)

feat: enlarge the size of the next button for uploading files
feat: add locale config to global.ts
tags/v0.1.0
balibabu 1 year ago
parent
commit
e3c24e653e
No account linked to committer's email address

+ 1
- 0
web/src/global.ts View File

@@ -0,0 +1 @@
import '@/locales/config';

+ 44
- 0
web/src/hooks/loginHooks.ts View File

@@ -0,0 +1,44 @@
import { useCallback } from 'react';
import { useDispatch } from 'umi';

export interface ILoginRequestBody {
email: string;
password: string;
}

export interface IRegisterRequestBody extends ILoginRequestBody {
nickname: string;
}

export const useLogin = () => {
const dispatch = useDispatch();

const login = useCallback(
(requestBody: ILoginRequestBody) => {
// TODO: Type needs to be improved
return dispatch<any>({
type: 'loginModel/login',
payload: requestBody,
});
},
[dispatch],
);

return login;
};

export const useRegister = () => {
const dispatch = useDispatch();

const register = useCallback(
(requestBody: IRegisterRequestBody) => {
return dispatch<any>({
type: 'loginModel/register',
payload: requestBody,
});
},
[dispatch],
);

return register;
};

+ 11
- 11
web/src/locales/config.ts View File

@@ -5,20 +5,20 @@ import translation_en from './en.json';
import translation_zh from './zh.json';
const resources = {
en: {
translation: translation_en,
},
zh: {
translation: translation_zh,
},
en: {
translation: translation_en,
},
zh: {
translation: translation_zh,
},
};
i18n.use(initReactI18next).init({
resources,
lng: 'zh',
interpolation: {
escapeValue: false,
},
resources,
lng: 'en',
interpolation: {
escapeValue: false,
},
});
export default i18n;

+ 20
- 19
web/src/locales/en.json View File

@@ -1,20 +1,21 @@
{
"header": {
"register": "Register",
"signin": "Sign In",
"home": "Home",
"setting": "用户设置",
"logout": "登出"
},
"footer": {
"detail": "All rights reserved @ React"
},
"layout": {
"file": "file",
"knowledge": "knowledge",
"chat": "chat"
},
"setting": {
"btn": "en"
}
}
"login": { "login": "Sign in" },
"header": {
"register": "Register",
"signin": "Sign in",
"home": "Home",
"setting": "用户设置",
"logout": "登出"
},
"footer": {
"detail": "All rights reserved @ React"
},
"layout": {
"file": "file",
"knowledge": "knowledge",
"chat": "chat"
},
"setting": {
"btn": "en"
}
}

+ 20
- 19
web/src/locales/zh.json View File

@@ -1,20 +1,21 @@
{
"header": {
"register": "注册",
"signin": "登陆",
"home": "首页",
"setting": "user setting",
"logout": "logout"
},
"footer": {
"detail": "版权所有 @ React"
},
"layout": {
"file": "文件",
"knowledge": "知识库",
"chat": "聊天"
},
"setting": {
"btn": "中文"
}
}
"login": { "login": "登录" },
"header": {
"register": "注册",
"signin": "登陆",
"home": "首页",
"setting": "user setting",
"logout": "logout"
},
"footer": {
"detail": "版权所有 @ React"
},
"layout": {
"file": "文件",
"knowledge": "知识库",
"chat": "聊天"
},
"setting": {
"btn": "中文"
}
}

+ 11
- 3
web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.less View File

@@ -1,16 +1,24 @@
.uploadWrapper {
display: flex;
flex-direction: column;
padding: 32px;
padding: 64px 32px 32px;
height: 100%;
.backToList {
display: none;
padding-bottom: 60px;
}
.footer {
text-align: right;
text-align: center;
padding-top: 16px;
.nextButton {
background-color: @purple;
// background-color: @purple;
font-weight: 700;
font-size: 24px;
display: inline-flex;
align-items: center;
padding: 26px 40px;
justify-content: center;
width: 10%;
}
}
.uploadContent {

+ 2
- 1
web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx View File

@@ -287,9 +287,10 @@ const KnowledgeUploadFile = () => {
<section className={styles.footer}>
<Button
type="primary"
// className={styles.nextButton}
className={styles.nextButton}
onClick={handleNextClick}
disabled={!enabled}
size="large"
>
Next
</Button>

+ 26
- 26
web/src/pages/login/index.tsx View File

@@ -1,59 +1,56 @@
import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks';
import { rsaPsw } from '@/utils';
import { Button, Checkbox, Form, Input } from 'antd';
import { useEffect, useState } from 'react';
import { Icon, useDispatch, useNavigate, useSelector } from 'umi';
import { useTranslation } from 'react-i18next';
import { Icon, useNavigate } from 'umi';
import RightPanel from './right-panel';
import { useLogin, useRegister } from '@/hooks/loginHooks';
import styles from './index.less';
const Login = () => {
const [title, setTitle] = useState('login');
let navigate = useNavigate();
const dispatch = useDispatch();
const effectsLoading: any = useSelector<any>( // TODO: Type needs to be improved
(state) => state.loading.effects,
);
const navigate = useNavigate();
const login = useLogin();
const register = useRegister();
const { t } = useTranslation();
// 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 signLoading = useOneNamespaceEffectsLoading('loginModel', [
'login',
'register',
]);
const changeTitle = () => {
setTitle((title) => (title === 'login' ? 'register' : 'login'));
};
const [form] = Form.useForm();
const [checkNick, setCheckNick] = useState(false);
useEffect(() => {
form.validateFields(['nickname']);
}, [checkNick, form]);
}, [form]);
const onCheck = async () => {
try {
const params = await form.validateFields();
var rsaPassWord = rsaPsw(params.password);
const rsaPassWord = rsaPsw(params.password) as string;
if (title === 'login') {
const retcode = await dispatch<any>({
type: 'loginModel/login',
payload: {
email: params.email,
password: rsaPassWord,
},
const retcode = await login({
email: params.email,
password: rsaPassWord,
});
if (retcode === 0) {
navigate('/knowledge');
}
} else {
// TODO: Type needs to be improved
const retcode = await dispatch<any>({
type: 'loginModel/register',
payload: {
nickname: params.nickname,
email: params.email,
password: rsaPassWord,
},
const retcode = await register({
nickname: params.nickname,
email: params.email,
password: rsaPassWord,
});
if (retcode === 0) {
setTitle('login');
@@ -72,12 +69,15 @@ const Login = () => {
window.location.href =
'https://github.com/login/oauth/authorize?scope=user:email&client_id=302129228f0d96055bee';
};
return (
<div className={styles.loginPage}>
<div className={styles.loginLeft}>
<div className={styles.leftContainer}>
<div className={styles.loginTitle}>
<div>{title === 'login' ? 'Sign in' : 'Create an account'}</div>
<div>
{title === 'login' ? t('login.login') : 'Create an account'}
</div>
<span>
{title === 'login'
? 'We’re so excited to see you again!'

Loading…
Cancel
Save