diff --git a/shared/i18n/langs/en-US/translation.json b/shared/i18n/langs/en-US/translation.json
index 7bf24d63..3b39f87b 100644
--- a/shared/i18n/langs/en-US/translation.json
+++ b/shared/i18n/langs/en-US/translation.json
@@ -168,6 +168,7 @@
"kdae72bb7": "Unable to get panel info",
"kdb57357d": "Connection failed",
"kdc18deca": "Invite users",
+ "kdc3e5cf6": "No friend requests pending",
"kdc4b4f92": "Public",
"kdc8de4ff": "Auto",
"kdd4c838c": "Jump to Group",
@@ -188,6 +189,7 @@
"kf22210a": "Loading plugin list",
"kf3fa6059": "You can use the complete <1>nickname#identifier1> to add friends",
"kf48ae58": "Group information not found",
+ "kf5861d84": "No friend requests have been sent yet",
"kf5d66247": "Panel Name",
"kf6d7f23d": "Connecting to chat server...",
"kf7d6acd4": "Create Guest",
diff --git a/shared/i18n/langs/zh-CN/translation.json b/shared/i18n/langs/zh-CN/translation.json
index d05a222d..90d866e2 100644
--- a/shared/i18n/langs/zh-CN/translation.json
+++ b/shared/i18n/langs/zh-CN/translation.json
@@ -168,6 +168,7 @@
"kdae72bb7": "无法获取面板信息",
"kdb57357d": "连接失败",
"kdc18deca": "邀请用户",
+ "kdc3e5cf6": "暂无待处理的好友请求",
"kdc4b4f92": "公共",
"kdc8de4ff": "自动",
"kdd4c838c": "跳转到群组",
@@ -188,6 +189,7 @@
"kf22210a": "正在加载插件列表",
"kf3fa6059": "您可以使用完整的 <1>用户昵称#标识1> 来添加好友",
"kf48ae58": "找不到群组信息",
+ "kf5861d84": "暂无已发送的好友请求",
"kf5d66247": "面板名",
"kf6d7f23d": "正在连接到聊天服务器...",
"kf7d6acd4": "创建访客",
diff --git a/web/assets/images/problem.svg b/web/assets/images/problem.svg
new file mode 100644
index 00000000..9147b780
--- /dev/null
+++ b/web/assets/images/problem.svg
@@ -0,0 +1,4 @@
+
diff --git a/web/src/components/Problem.tsx b/web/src/components/Problem.tsx
new file mode 100644
index 00000000..2fd45acd
--- /dev/null
+++ b/web/src/components/Problem.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import problemSvg from '@assets/images/problem.svg';
+
+interface ProblemProps {
+ text?: React.ReactNode;
+}
+
+/**
+ * 问题页面占位
+ */
+export const Problem: React.FC = React.memo((props) => {
+ return (
+
+

+
+
{props.text}
+
+ );
+});
+Problem.displayName = 'Problem';
diff --git a/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx b/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx
index 470e7d81..280392ba 100644
--- a/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx
+++ b/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx
@@ -9,6 +9,7 @@ import {
useAsyncRequest,
} from 'tailchat-shared';
import React from 'react';
+import { Problem } from '@/components/Problem';
export const RequestReceived: React.FC<{
requests: FriendRequest[];
@@ -27,6 +28,10 @@ export const RequestReceived: React.FC<{
[]
);
+ if (props.requests.length === 0) {
+ return ;
+ }
+
const loading = acceptLoading || denyLoading;
return (
diff --git a/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx b/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx
index 452ae721..4c8a5315 100644
--- a/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx
+++ b/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx
@@ -8,6 +8,7 @@ import {
useAsyncFn,
} from 'tailchat-shared';
import React from 'react';
+import { Problem } from '@/components/Problem';
export const RequestSend: React.FC<{
requests: FriendRequest[];
@@ -16,6 +17,10 @@ export const RequestSend: React.FC<{
await cancelFriendRequest(requestId);
}, []);
+ if (props.requests.length === 0) {
+ return ;
+ }
+
return (