perf: 登录顺序
This commit is contained in:
parent
dd5217d8a5
commit
16775430ea
@ -38,7 +38,9 @@
|
|||||||
"react-hook-form": "^7.43.1",
|
"react-hook-form": "^7.43.1",
|
||||||
"react-markdown": "^8.0.5",
|
"react-markdown": "^8.0.5",
|
||||||
"react-syntax-highlighter": "^15.5.0",
|
"react-syntax-highlighter": "^15.5.0",
|
||||||
|
"rehype-katex": "^6.0.2",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
|
"remark-math": "^5.1.1",
|
||||||
"sass": "^1.58.3",
|
"sass": "^1.58.3",
|
||||||
"sharp": "^0.31.3",
|
"sharp": "^0.31.3",
|
||||||
"tunnel": "^0.0.6",
|
"tunnel": "^0.0.6",
|
||||||
@ -56,11 +58,11 @@
|
|||||||
"@types/react-syntax-highlighter": "^15.5.6",
|
"@types/react-syntax-highlighter": "^15.5.6",
|
||||||
"@types/tunnel": "^0.0.3",
|
"@types/tunnel": "^0.0.3",
|
||||||
"@types/uuid": "^9.0.1",
|
"@types/uuid": "^9.0.1",
|
||||||
|
"eslint": "8.34.0",
|
||||||
|
"eslint-config-next": "13.1.6",
|
||||||
"husky": "^8.0.3",
|
"husky": "^8.0.3",
|
||||||
"lint-staged": "^13.1.2",
|
"lint-staged": "^13.1.2",
|
||||||
"prettier": "^2.8.4",
|
"prettier": "^2.8.4"
|
||||||
"eslint": "8.34.0",
|
|
||||||
"eslint-config-next": "13.1.6"
|
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"./src/**/*.{ts,tsx,scss}": "npm run format"
|
"./src/**/*.{ts,tsx,scss}": "npm run format"
|
||||||
|
|||||||
612
pnpm-lock.yaml
generated
612
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -375,4 +375,9 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
font-family: 'Söhne,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji';
|
font-family: 'Söhne,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: underline;
|
||||||
|
color: var(--chakra-colors-blue-600);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,14 @@
|
|||||||
import React, { memo, useMemo } from 'react';
|
import React, { memo, useMemo } from 'react';
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import remarkGfm from 'remark-gfm';
|
|
||||||
import styles from './index.module.scss';
|
import styles from './index.module.scss';
|
||||||
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
||||||
import { codeLight } from './codeLight';
|
import { codeLight } from './codeLight';
|
||||||
import { Box, Flex } from '@chakra-ui/react';
|
import { Box, Flex } from '@chakra-ui/react';
|
||||||
import { useCopyData } from '@/utils/tools';
|
import { useCopyData } from '@/utils/tools';
|
||||||
import Icon from '@/components/Icon';
|
import Icon from '@/components/Icon';
|
||||||
|
import remarkGfm from 'remark-gfm';
|
||||||
|
import remarkMath from 'remark-math';
|
||||||
|
import rehypeKatex from 'rehype-katex';
|
||||||
|
|
||||||
const Markdown = ({ source, isChatting }: { source: string; isChatting: boolean }) => {
|
const Markdown = ({ source, isChatting }: { source: string; isChatting: boolean }) => {
|
||||||
const formatSource = useMemo(() => source.replace(/\n/g, ' \n'), [source]);
|
const formatSource = useMemo(() => source.replace(/\n/g, ' \n'), [source]);
|
||||||
@ -17,7 +19,8 @@ const Markdown = ({ source, isChatting }: { source: string; isChatting: boolean
|
|||||||
className={`${styles.markdown} ${
|
className={`${styles.markdown} ${
|
||||||
isChatting ? (source === '' ? styles.waitingAnimation : styles.animation) : ''
|
isChatting ? (source === '' ? styles.waitingAnimation : styles.animation) : ''
|
||||||
}`}
|
}`}
|
||||||
rehypePlugins={[remarkGfm]}
|
remarkPlugins={[remarkMath]}
|
||||||
|
rehypePlugins={[remarkGfm, rehypeKatex]}
|
||||||
components={{
|
components={{
|
||||||
pre: 'div',
|
pre: 'div',
|
||||||
code({ node, inline, className, children, ...props }) {
|
code({ node, inline, className, children, ...props }) {
|
||||||
@ -55,6 +58,7 @@ const Markdown = ({ source, isChatting }: { source: string; isChatting: boolean
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
linkTarget="_blank"
|
||||||
>
|
>
|
||||||
{formatSource}
|
{formatSource}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
|
|||||||
@ -50,10 +50,6 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => {
|
|||||||
async ({ email, code, password }: RegisterType) => {
|
async ({ email, code, password }: RegisterType) => {
|
||||||
setRequesting(true);
|
setRequesting(true);
|
||||||
try {
|
try {
|
||||||
toast({
|
|
||||||
title: `密码已找回`,
|
|
||||||
status: 'success'
|
|
||||||
});
|
|
||||||
loginSuccess(
|
loginSuccess(
|
||||||
await postFindPassword({
|
await postFindPassword({
|
||||||
email,
|
email,
|
||||||
@ -61,6 +57,10 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => {
|
|||||||
password
|
password
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
toast({
|
||||||
|
title: `密码已找回`,
|
||||||
|
status: 'success'
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
typeof error === 'string' &&
|
typeof error === 'string' &&
|
||||||
toast({
|
toast({
|
||||||
|
|||||||
@ -32,16 +32,16 @@ const LoginForm = ({ setPageType, loginSuccess }: Props) => {
|
|||||||
async ({ email, password }: LoginFormType) => {
|
async ({ email, password }: LoginFormType) => {
|
||||||
setRequesting(true);
|
setRequesting(true);
|
||||||
try {
|
try {
|
||||||
toast({
|
|
||||||
title: '登录成功',
|
|
||||||
status: 'success'
|
|
||||||
});
|
|
||||||
loginSuccess(
|
loginSuccess(
|
||||||
await postLogin({
|
await postLogin({
|
||||||
email,
|
email,
|
||||||
password
|
password
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
toast({
|
||||||
|
title: '登录成功',
|
||||||
|
status: 'success'
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
typeof error === 'string' &&
|
typeof error === 'string' &&
|
||||||
toast({
|
toast({
|
||||||
|
|||||||
@ -50,10 +50,6 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => {
|
|||||||
async ({ email, password, code }: RegisterType) => {
|
async ({ email, password, code }: RegisterType) => {
|
||||||
setRequesting(true);
|
setRequesting(true);
|
||||||
try {
|
try {
|
||||||
toast({
|
|
||||||
title: `注册成功`,
|
|
||||||
status: 'success'
|
|
||||||
});
|
|
||||||
loginSuccess(
|
loginSuccess(
|
||||||
await postRegister({
|
await postRegister({
|
||||||
email,
|
email,
|
||||||
@ -61,6 +57,10 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => {
|
|||||||
password
|
password
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
toast({
|
||||||
|
title: `注册成功`,
|
||||||
|
status: 'success'
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
typeof error === 'string' &&
|
typeof error === 'string' &&
|
||||||
toast({
|
toast({
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user