@@ -1123,6 +1471,13 @@ function ChatHeader({
{conv?.channel === 'email'
? conv.emailSubject || c?.email || 'Email 会话'
+ : conv?.channel === 'whatsapp'
+ ? presenceLabel
+ || (c?.phone
+ ? `${c.phone} · WhatsApp`
+ : chatType === 'group'
+ ? 'WhatsApp 群组'
+ : 'WhatsApp 会话')
: c?.telegramUsername
? `@${c.telegramUsername} · 在线`
: 'Telegram 会话'}
@@ -1157,14 +1512,27 @@ function ChatHeader({
onSelect: () => onWallpaperChange(item.value),
}))}
/>
- {conv?.channel === 'telegram' && (
+ {['telegram', 'whatsapp'].includes(conv?.channel) && (
+
)}
items={[
+ ...(conv.channel === 'whatsapp' && chatType === 'group' && onGroupManage
+ ? [{
+ key: 'group-manage',
+ label: '群组管理',
+ icon: UserRound,
+ onSelect: onGroupManage,
+ }, 'separator' as const]
+ : []),
{
key: conv.isPinned ? 'unpin' : 'pin',
label: conv.isPinned ? '取消置顶' : '置顶会话',
@@ -1193,7 +1561,7 @@ function ChatHeader({
key: conv.isBlocked ? 'unblock' : 'block',
label: conv.isBlocked ? '解除拉黑' : '拉黑用户',
icon: Ban,
- disabled: !c?.telegramUserId,
+ disabled: conv.channel === 'telegram' && !c?.telegramUserId,
onSelect: () => onTelegramAction(conv.isBlocked ? 'unblock' : 'block'),
},
'separator',
@@ -1202,16 +1570,16 @@ function ChatHeader({
key: 'clear',
label: '清空消息',
icon: Eraser,
- onSelect: () => onTelegramAction('clear' as TelegramConversationAction),
+ onSelect: () => onTelegramAction('clear' as ConversationAction),
}]
: []),
- ...(String(conv.telegramChatType || c?.telegramChatType || '').toLowerCase() !== 'private'
+ ...(chatType !== 'private'
? [{
key: 'leave',
label: '退出群组/频道',
icon: LogOut,
danger: true,
- onSelect: () => onTelegramAction('leave' as TelegramConversationAction),
+ onSelect: () => onTelegramAction('leave' as ConversationAction),
}]
: []),
{
diff --git a/src/pages/knowledge/KnowledgePage.tsx b/src/pages/knowledge/KnowledgePage.tsx
index a3a1a0e..166c5d6 100644
--- a/src/pages/knowledge/KnowledgePage.tsx
+++ b/src/pages/knowledge/KnowledgePage.tsx
@@ -65,7 +65,7 @@ export function KnowledgePage() {
@@ -129,7 +129,7 @@ export function KnowledgePage() {
{tab === 'search' && (
-
setSearchQ(e.target.value)} className="flex-1" />
+
setSearchQ(e.target.value)} className="flex-1" />