From d1087ec87c2c1ff122822153104642f1aadeb14a Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Sat, 15 Mar 2025 13:14:06 +0800 Subject: [PATCH] fix: lint warning --- .../src/components/Scrollbar/index.tsx | 28 +++++++++---------- src/renderer/src/pages/agents/AgentsPage.tsx | 6 ++-- .../pages/agents/components/AddAgentPopup.tsx | 1 + src/renderer/src/pages/home/HomePage.tsx | 1 + .../src/pages/home/Inputbar/Inputbar.tsx | 17 ++++++----- .../pages/home/Messages/MessageMenubar.tsx | 23 +++++++-------- .../src/pages/home/components/Suggestions.tsx | 12 ++------ .../AssistantModelSettings.tsx | 1 + .../ProviderSettings/ProviderSetting.tsx | 7 +++-- yarn.lock | 9 +++++- 10 files changed, 54 insertions(+), 51 deletions(-) diff --git a/src/renderer/src/components/Scrollbar/index.tsx b/src/renderer/src/components/Scrollbar/index.tsx index 70ea3e4e..0c45f783 100644 --- a/src/renderer/src/components/Scrollbar/index.tsx +++ b/src/renderer/src/components/Scrollbar/index.tsx @@ -11,29 +11,27 @@ const Scrollbar: FC = forwardRef((props, ref) => { const [isScrolling, setIsScrolling] = useState(false) const timeoutRef = useRef(null) - const handleScroll = useCallback( - throttle(() => { - setIsScrolling(true) + const handleScroll = useCallback(() => { + setIsScrolling(true) - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - } + if (timeoutRef.current) { + clearTimeout(timeoutRef.current) + } - timeoutRef.current = setTimeout(() => setIsScrolling(false), 1500) // 增加到 2 秒 - }, 200), - [] - ) + timeoutRef.current = setTimeout(() => setIsScrolling(false), 1500) + }, []) + + const throttledHandleScroll = throttle(handleScroll, 200) useEffect(() => { return () => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - } + timeoutRef.current && clearTimeout(timeoutRef.current) + throttledHandleScroll.cancel() } - }, []) + }, [throttledHandleScroll]) return ( - + {props.children} ) diff --git a/src/renderer/src/pages/agents/AgentsPage.tsx b/src/renderer/src/pages/agents/AgentsPage.tsx index e3b0984d..840765e6 100644 --- a/src/renderer/src/pages/agents/AgentsPage.tsx +++ b/src/renderer/src/pages/agents/AgentsPage.tsx @@ -88,7 +88,7 @@ const AgentsPage: FC = () => { [t] ) - const getAgentFromSystemAgent = (agent: (typeof systemAgents)[number]) => { + const getAgentFromSystemAgent = useCallback((agent: (typeof systemAgents)[number]) => { return { ...omit(agent, 'group'), name: agent.name, @@ -96,7 +96,7 @@ const AgentsPage: FC = () => { topics: [], type: 'agent' } - } + }, []) const getLocalizedGroupName = useCallback( (group: string) => { @@ -121,7 +121,7 @@ const AgentsPage: FC = () => { ) }, - [onAddAgentConfirm] + [getAgentFromSystemAgent, onAddAgentConfirm] ) const tabItems = useMemo(() => { diff --git a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx index 0d38e47d..681a426c 100644 --- a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx +++ b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx @@ -61,6 +61,7 @@ const PopupContainer: React.FC = ({ resolve }) => { } } updateTokenCount() + // eslint-disable-next-line react-hooks/exhaustive-deps }, [form.getFieldValue('prompt')]) const onFinish = (values: FieldType) => { diff --git a/src/renderer/src/pages/home/HomePage.tsx b/src/renderer/src/pages/home/HomePage.tsx index 50ee7710..d233cdce 100644 --- a/src/renderer/src/pages/home/HomePage.tsx +++ b/src/renderer/src/pages/home/HomePage.tsx @@ -33,6 +33,7 @@ const HomePage: FC = () => { useEffect(() => { state?.assistant && setActiveAssistant(state?.assistant) state?.topic && setActiveTopic(state?.topic) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [state]) useEffect(() => { diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index e3c70fb9..8b048a7a 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -77,7 +77,6 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = const [expended, setExpend] = useState(false) const [estimateTokenCount, setEstimateTokenCount] = useState(0) const [contextCount, setContextCount] = useState({ current: 0, max: 0 }) - // const generating = useAppSelector((state) => state.runtime.generating) const textareaRef = useRef(null) const [files, setFiles] = useState(_files) const { t } = useTranslation() @@ -110,18 +109,21 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = const [mentionFromKeyboard, setMentionFromKeyboard] = useState(false) const debouncedEstimate = useCallback( - debounce((newText) => { + (newText: string) => { if (showInputEstimatedTokens) { const count = estimateTxtTokens(newText) || 0 setTokenCount(count) } - }, 500), + }, [showInputEstimatedTokens] ) + const debouncedEstimateWithDelay = debounce(debouncedEstimate, 500) + useEffect(() => { - debouncedEstimate(text) - }, [text, debouncedEstimate]) + debouncedEstimateWithDelay(text) + return () => debouncedEstimateWithDelay.cancel() + }, [text, debouncedEstimateWithDelay]) const inputTokenCount = showInputEstimatedTokens ? tokenCount : 0 @@ -438,7 +440,7 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = } } }, - [pasteLongTextAsFile, pasteLongTextThreshold, supportExts, t, text] + [model, pasteLongTextAsFile, pasteLongTextThreshold, resizeTextArea, supportExts, t, text] ) const handleDragOver = (e: React.DragEvent) => { @@ -548,7 +550,7 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = }) ] return () => unsubscribes.forEach((unsub) => unsub()) - }, [addNewTopic]) + }, [addNewTopic, resizeTextArea]) useEffect(() => { textareaRef.current?.focus() @@ -556,6 +558,7 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = useEffect(() => { setTimeout(() => resizeTextArea(), 0) + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) useEffect(() => { diff --git a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx index b35b2942..78985ace 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -86,22 +86,19 @@ const MessageMenubar: FC = (props) => { const handleResendUserMessage = useCallback( async (messageUpdate?: Message) => { - // messageUpdate 为了处理用户消息更改后的message - if (loading) return - const groupdMessages = messages.filter((m) => m.askId === message.id) + if (!loading) { + const groupdMessages = messages.filter((m) => m.askId === message.id) - // Resend all grouped messages - if (!isEmpty(groupdMessages)) { - // for (const assistantMessage of groupdMessages) { - // const _model = assistantMessage.model || assistantModel - await resendMessage(message, assistant) - // } - return + // Resend all grouped messages + if (!isEmpty(groupdMessages)) { + await resendMessage(message, assistant) + return + } + + await resendMessage(messageUpdate ?? message, assistant) } - - await resendMessage(messageUpdate ?? message, assistant) }, - [message, assistantModel, resendMessage, assistant, messages, loading] + [message, resendMessage, assistant, messages, loading] ) const onEdit = useCallback(async () => { diff --git a/src/renderer/src/pages/home/components/Suggestions.tsx b/src/renderer/src/pages/home/components/Suggestions.tsx index 32df674c..22bc5796 100644 --- a/src/renderer/src/pages/home/components/Suggestions.tsx +++ b/src/renderer/src/pages/home/components/Suggestions.tsx @@ -48,16 +48,8 @@ const Suggestions: FC = ({ assistant, messages }) => { useEffect(() => { suggestionsHandle() - // const unsubscribes = [ - // EventEmitter.on(EVENT_NAMES.RECEIVE_MESSAGE, async (msg: Message) => { - - // ] - // return () => { - // for (const unsub of unsubscribes) { - // unsub() - // } - // } - }, []) // Remove messages dependency + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) useEffect(() => { setSuggestions(suggestionsMap.get(messages[messages.length - 1]?.id) || []) diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index 09a27b02..5dffe6c7 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -182,6 +182,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA useEffect(() => { return () => updateAssistantSettings({ customParameters: customParametersRef.current }) + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) const formatSliderTooltip = (value?: number) => { diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index a91a7e9e..6a5a4ba2 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -324,8 +324,11 @@ const ProviderSetting: FC = ({ provider: _provider }) => { {isOpenAIProvider(provider) && ( - {hostPreview()} - {t('settings.provider.api.url.tip')} + + {hostPreview()} + + {t('settings.provider.api.url.tip')} )} {isAzureOpenAI && ( diff --git a/yarn.lock b/yarn.lock index 17ba74fb..6fb55b7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4749,7 +4749,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.8.1": +"commander@npm:^2.19.0, commander@npm:^2.8.1": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 @@ -9362,6 +9362,13 @@ __metadata: languageName: node linkType: hard +"longest-streak@npm:^2.0.0": + version: 2.0.4 + resolution: "longest-streak@npm:2.0.4" + checksum: 10c0/918fb5104cde537757f44431776d6d828bc091a63ca38a3b3e59a08b88498b4421bf5fd9823ef22b4d186f0234d9943087fa96bd6117d26dedcf6008480fd46a + languageName: node + linkType: hard + "longest-streak@npm:^3.0.0": version: 3.1.0 resolution: "longest-streak@npm:3.1.0"