perf: 登录顺序

This commit is contained in:
archer 2023-03-06 20:40:10 +08:00
parent dd5217d8a5
commit 16775430ea
7 changed files with 415 additions and 242 deletions

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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);
}
} }

View File

@ -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>

View File

@ -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({

View File

@ -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({

View File

@ -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({