From 8c6684cbdff974265605f702df86874e95e25e0a Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Wed, 9 Jul 2025 20:36:41 +0800 Subject: [PATCH] refactor(WebSearchButton): simplify web search button logic and improve tooltip behavior - Removed unused imports and streamlined the logic for enabling web search. - Updated the tooltip title to reflect the current state of web search functionality. - Enhanced the handling of quick panel opening based on the assistant's web search settings. --- .../home/Inputbar/KnowledgeBaseButton.tsx | 2 +- .../pages/home/Inputbar/WebSearchButton.tsx | 52 +++++++++---------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx index 2f050cb8ad..3462788bdc 100644 --- a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx @@ -65,7 +65,7 @@ const KnowledgeBaseButton: FC = ({ ref, selectedBases, onSelect, disabled title: t('chat.input.knowledge_base'), list: baseItems, symbol: '#', - multiple: true, + multiple: false, afterAction({ item }) { item.isSelected = !item.isSelected } diff --git a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx index ec18054047..c17f5fe2cc 100644 --- a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx @@ -6,10 +6,9 @@ import WebSearchService from '@renderer/services/WebSearchService' import { Assistant, WebSearchProvider } from '@renderer/types' import { hasObjectKey } from '@renderer/utils' import { Tooltip } from 'antd' -import { CircleX, Globe, Settings } from 'lucide-react' +import { Globe } from 'lucide-react' import { FC, memo, useCallback, useImperativeHandle, useMemo } from 'react' import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' export interface WebSearchButtonRef { openQuickPanel: () => void @@ -23,11 +22,12 @@ interface Props { const WebSearchButton: FC = ({ ref, assistant, ToolbarButton }) => { const { t } = useTranslation() - const navigate = useNavigate() const quickPanel = useQuickPanel() const { providers } = useWebSearchProviders() const { updateAssistant } = useAssistant(assistant.id) + const enableWebSearch = assistant?.webSearchProviderId || assistant.enableWebSearch + const updateSelectedWebSearchProvider = useCallback( (providerId?: WebSearchProvider['id']) => { // TODO: updateAssistant有性能问题,会导致关闭快捷面板卡顿 @@ -78,42 +78,41 @@ const WebSearchButton: FC = ({ ref, assistant, ToolbarButton }) => { }) } - items.push({ - label: t('chat.input.web_search.settings'), - icon: , - action: () => navigate('/settings/tool/websearch') - }) - - items.unshift({ - label: t('common.close'), - description: t('chat.input.web_search.no_web_search.description'), - icon: , - isSelected: !assistant.enableWebSearch && !assistant.webSearchProviderId, - action: () => { - updateSelectedWebSearchProvider(undefined) - } - }) - return items }, [ - assistant.model, assistant.enableWebSearch, - assistant.webSearchProviderId, + assistant.model, + assistant?.webSearchProviderId, providers, t, - updateSelectedWebSearchProvider, updateSelectedWebSearchBuiltin, - navigate + updateSelectedWebSearchProvider ]) const openQuickPanel = useCallback(() => { + if (assistant.webSearchProviderId) { + return updateSelectedWebSearchProvider(undefined) + } + + if (assistant.enableWebSearch) { + return updateSelectedWebSearchBuiltin() + } + quickPanel.open({ title: t('chat.input.web_search'), list: providerItems, symbol: '?', pageSize: 9 }) - }, [quickPanel, providerItems, t]) + }, [ + assistant.webSearchProviderId, + assistant.enableWebSearch, + quickPanel, + t, + providerItems, + updateSelectedWebSearchProvider, + updateSelectedWebSearchBuiltin + ]) const handleOpenQuickPanel = useCallback(() => { if (quickPanel.isVisible && quickPanel.symbol === '?') { @@ -128,13 +127,12 @@ const WebSearchButton: FC = ({ ref, assistant, ToolbarButton }) => { })) return ( - +