From d62ff693513c485fa7dea13cace9f4525146891f Mon Sep 17 00:00:00 2001 From: Konjac-XZ <1951801592@qq.com> Date: Mon, 3 Mar 2025 09:04:41 +0800 Subject: [PATCH] fix: Token estimate count cannot be updated on the UI when typing quickly. --- .../src/pages/home/Inputbar/Inputbar.tsx | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index ea413086..67da05b7 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -94,11 +94,24 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic }) => { const showKnowledgeIcon = useSidebarIconShow('knowledge') - const estimateTextTokens = useCallback(debounce(estimateTxtTokens, 1000), []) - const inputTokenCount = useMemo( - () => (showInputEstimatedTokens ? estimateTextTokens(text) || 0 : 0), - [estimateTextTokens, showInputEstimatedTokens, text] + const [tokenCount, setTokenCount] = useState(0) + + const debouncedEstimate = useCallback( + debounce((newText) => { + if (showInputEstimatedTokens) { + const count = estimateTxtTokens(newText) || 0 + setTokenCount(count) + } + }, 500), + [showInputEstimatedTokens] ) + + useEffect(() => { + debouncedEstimate(text) + }, [text, debouncedEstimate]) + + const inputTokenCount = showInputEstimatedTokens ? tokenCount : 0 + const newTopicShortcut = useShortcutDisplay('new_topic') const newContextShortcut = useShortcutDisplay('toggle_new_context') const cleanTopicShortcut = useShortcutDisplay('clear_topic')