Skip to content

Commit 8d25b29

Browse files
committed
Refactor effect hooks for cleanup and focus logic
Moved the cleanup interval and debounced focus effect hooks to after the visibleMessages memoization. This change improves code organization and ensures that hooks are declared after all dependent variables are defined.
1 parent 2d94fd2 commit 8d25b29

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

webview-ui/src/components/chat/ChatView.tsx

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -465,22 +465,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
465465
}
466466
}, [])
467467

468-
useEffect(() => {
469-
const cleanupInterval = setInterval(() => {
470-
const cache = everVisibleMessagesTsRef.current
471-
const currentMessageIds = new Set(modifiedMessages.map((m: ClineMessage) => m.ts))
472-
const viewportMessages = visibleMessages.slice(Math.max(0, visibleMessages.length - 100))
473-
const viewportMessageIds = new Set(viewportMessages.map((m: ClineMessage) => m.ts))
474-
475-
cache.forEach((_value: boolean, key: number) => {
476-
if (!currentMessageIds.has(key) && !viewportMessageIds.has(key)) {
477-
cache.delete(key)
478-
}
479-
})
480-
}, 60000)
481-
482-
return () => clearInterval(cleanupInterval)
483-
}, [modifiedMessages, visibleMessages])
484468

485469
useEffect(() => {
486470
const prev = prevExpandedRowsRef.current
@@ -915,16 +899,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
915899
// NOTE: the VSCode window needs to be focused for this to work.
916900
useMount(() => textAreaRef.current?.focus())
917901

918-
useDebounceEffect(
919-
() => {
920-
if (!isHidden && !sendingDisabled && !enableButtons) {
921-
textAreaRef.current?.focus()
922-
}
923-
},
924-
50,
925-
[isHidden, sendingDisabled, enableButtons],
926-
)
927-
928902
const visibleMessages = useMemo(() => {
929903
const currentMessageCount = modifiedMessages.length
930904
const startIndex = Math.max(0, currentMessageCount - 500)
@@ -990,6 +964,33 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
990964

991965
return newVisibleMessages
992966
}, [modifiedMessages])
967+
968+
useEffect(() => {
969+
const cleanupInterval = setInterval(() => {
970+
const cache = everVisibleMessagesTsRef.current
971+
const currentMessageIds = new Set(modifiedMessages.map((m: ClineMessage) => m.ts))
972+
const viewportMessages = visibleMessages.slice(Math.max(0, visibleMessages.length - 100))
973+
const viewportMessageIds = new Set(viewportMessages.map((m: ClineMessage) => m.ts))
974+
975+
cache.forEach((_value: boolean, key: number) => {
976+
if (!currentMessageIds.has(key) && !viewportMessageIds.has(key)) {
977+
cache.delete(key)
978+
}
979+
})
980+
}, 60000)
981+
982+
return () => clearInterval(cleanupInterval)
983+
}, [modifiedMessages, visibleMessages])
984+
985+
useDebounceEffect(
986+
() => {
987+
if (!isHidden && !sendingDisabled && !enableButtons) {
988+
textAreaRef.current?.focus()
989+
}
990+
},
991+
50,
992+
[isHidden, sendingDisabled, enableButtons],
993+
)
993994

994995
const isReadOnlyToolAction = useCallback((message: ClineMessage | undefined) => {
995996
if (message?.type === "ask") {

0 commit comments

Comments
 (0)