修复权限操作

This commit is contained in:
2025-12-08 21:36:03 +08:00
parent a4479971a8
commit 0a3c1a2735
5 changed files with 175 additions and 39 deletions
+26 -2
View File
@@ -10,7 +10,7 @@ import {
SearchOutlined,
} from '@ant-design/icons';
import { Button, Dropdown, Input, Layout, Menu, Modal, Tooltip, message, theme, Select } from 'antd';
import { forwardRef, useImperativeHandle, useState } from 'react';
import { forwardRef, useImperativeHandle, useMemo, useState } from 'react';
import type { ChatApp } from '~/api/dify-chat-apps/types';
import type { ConversationItem } from '~/api/dify-chat';
import { deleteConversation, renameConversation } from '~/api/dify-chat';
@@ -68,6 +68,30 @@ const ChatSidebar = forwardRef<ChatSidebarRef, ChatSidebarProps>(({
token: { colorBgContainer, borderRadiusLG },
} = theme.useToken();
// 去重:防止后端返回重复的应用数据
const uniqueChatApps = useMemo(() => {
const appMap = new Map<string, ChatApp>();
chatApps.forEach(app => {
// 如果已经存在相同ID的应用,保留第一个(或检查is_default属性)
if (!appMap.has(app.app_id)) {
appMap.set(app.app_id, app);
} else {
// 如果重复的是默认应用,保留默认版本
const existingApp = appMap.get(app.app_id)!;
if (app.is_default && !existingApp.is_default) {
appMap.set(app.app_id, app);
}
}
});
const unique = Array.from(appMap.values());
console.log('[Sidebar] 应用去重:', {
originalCount: chatApps.length,
uniqueCount: unique.length,
removed: chatApps.length - unique.length
});
return unique;
}, [chatApps]);
// 过滤会话列表
const filteredConversations = conversations.filter(conv =>
conv.name.toLowerCase().includes(searchValue.toLowerCase())
@@ -302,7 +326,7 @@ const ChatSidebar = forwardRef<ChatSidebarRef, ChatSidebarProps>(({
placeholder="选择对话应用"
size="small"
>
{(chatApps || []).map(app => (
{uniqueChatApps.map(app => (
<Select.Option key={app.app_id} value={app.app_id}>
{app.app_name}
</Select.Option>