From 2af5f16e73cd829f51cc9b4dca29be1ce2958aff Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sat, 10 Jul 2021 21:27:58 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=A5=BD=E5=8F=8B=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E7=BB=93=E6=9E=9C=E4=B8=8E=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/api/request.ts | 5 ++ shared/index.tsx | 7 +- shared/model/user.ts | 15 ++++ web/src/dark.less | 2 +- web/src/routes/Main/Content/PageContent.tsx | 4 +- .../Content/Personal/Friends/AddFriend.tsx | 77 +++++++++++++++++-- 6 files changed, 101 insertions(+), 9 deletions(-) diff --git a/shared/api/request.ts b/shared/api/request.ts index 65d0cc9a..420d76ac 100644 --- a/shared/api/request.ts +++ b/shared/api/request.ts @@ -43,6 +43,11 @@ export function createRequest() { ins.interceptors.response.use( (val) => { + /** + * 预处理返回的数据 + */ + val.data = _get(val.data, 'data', val.data); + return val; }, (err) => { diff --git a/shared/index.tsx b/shared/index.tsx index dbd4b9b7..59c26923 100644 --- a/shared/index.tsx +++ b/shared/index.tsx @@ -30,7 +30,12 @@ export { setTokenGetter } from './manager/request'; export { setServiceUrl } from './manager/service'; // model -export { loginWithEmail, registerWithEmail } from './model/user'; +export type { UserBaseInfo } from './model/user'; +export { + loginWithEmail, + registerWithEmail, + searchUserWithUniqueName, +} from './model/user'; // redux export { userActions } from './redux/slices'; diff --git a/shared/model/user.ts b/shared/model/user.ts index ad4cb01f..d58f786a 100644 --- a/shared/model/user.ts +++ b/shared/model/user.ts @@ -4,6 +4,7 @@ export interface UserBaseInfo { _id: string; email: string; nickname: string; + discriminator: string; avatar: string | null; } @@ -63,3 +64,17 @@ export async function registerWithEmail( return data; } + +/** + * 使用唯一标识名搜索用户 + * @param uniqueName 唯一标识用户昵称: 用户昵称#0000 + */ +export async function searchUserWithUniqueName( + uniqueName: string +): Promise { + const { data } = await request.post('/api/user/searchUserWithUniqueName', { + uniqueName, + }); + + return data; +} diff --git a/web/src/dark.less b/web/src/dark.less index ab05632f..760bbf18 100644 --- a/web/src/dark.less +++ b/web/src/dark.less @@ -5,7 +5,7 @@ } // 分割线 - .ant-divider-horizontal.ant-divider-with-text { + .ant-divider { border-top-color: rgba(255,255,255,0.12); color: rgba(255,255,255,0.85); } diff --git a/web/src/routes/Main/Content/PageContent.tsx b/web/src/routes/Main/Content/PageContent.tsx index dbc7ff06..f0d8237c 100644 --- a/web/src/routes/Main/Content/PageContent.tsx +++ b/web/src/routes/Main/Content/PageContent.tsx @@ -77,7 +77,7 @@ export const PageContent: React.FC = React.memo((props) => { const sidebarEl = _isNil(sidebar) ? null : (
@@ -102,7 +102,7 @@ export const PageContent: React.FC = React.memo((props) => { <> {sidebarEl} -
+
{contentMaskEl} {contentEl}
diff --git a/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx b/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx index db6c9e1d..67096b99 100644 --- a/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx +++ b/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx @@ -1,7 +1,66 @@ +import { Avatar } from '@/components/Avatar'; import { Highlight } from '@/components/Highlight'; -import React from 'react'; +import { Button, Divider, Empty } from 'antd'; +import { + searchUserWithUniqueName, + useAsyncFn, + UserBaseInfo, +} from 'pawchat-shared'; +import React, { useState } from 'react'; + +const SearchFriendResult: React.FC<{ + result: UserBaseInfo | undefined | null; +}> = React.memo(({ result }) => { + if (result === undefined) { + return null; + } + + if (result === null) { + return ; + } + + return ( +
+ + +
+
+ +
+ {result.nickname} + + #{result.discriminator} + +
+
+ + +
+
+ ); +}); +SearchFriendResult.displayName = 'SearchFriendResult'; export const AddFriend: React.FC = React.memo(() => { + const [uniqueName, setUniqueName] = useState(''); + const [{ loading, value }, searchUser] = useAsyncFn(async () => { + // 搜索用户 + try { + const data = await searchUserWithUniqueName(uniqueName); + + return data; + } catch (err) { + console.error(err); + } + }, [uniqueName]); + return (
添加好友
@@ -12,13 +71,21 @@ export const AddFriend: React.FC = React.memo(() => {
setUniqueName(e.target.value)} /> -
-
查找好友
-
+
+ +
); });