Skip to content

Commit 12148a2

Browse files
committed
fix(ws-hook): remove phase from effect deps to prevent reconnect on completion
- Add phaseRef to track phase without causing effect re-runs - Use phaseRef.current inside effect instead of phase state - Remove phase from dependency array with eslint-disable comment - Prevents connect(repoId) being called when phase changes to 'completed'
1 parent 069e772 commit 12148a2

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

frontend/src/hooks/useRepoIndexingWebSocket.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ export function useRepoIndexingWebSocket(
8181
const wsRef = useRef<WebSocket | null>(null)
8282
const reconnectAttempts = useRef(0)
8383
const reconnectTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)
84+
// Track phase in ref to avoid effect re-running when phase changes
85+
const phaseRef = useRef<IndexingPhase>('idle')
86+
phaseRef.current = phase
8487

8588
const cleanup = useCallback(() => {
8689
wsRef.current?.close()
@@ -221,13 +224,15 @@ export function useRepoIndexingWebSocket(
221224
}, [session?.access_token, cleanup, handleMessage])
222225

223226
// Connect when repoId changes
227+
// Note: phase intentionally excluded from deps - we use phaseRef to check completion
228+
// without triggering reconnects when phase changes to 'completed'
224229
useEffect(() => {
225230
if (repoId && session?.access_token) {
226231
connect(repoId)
227232
} else {
228233
cleanup()
229-
// Only reset if not completed
230-
if (phase !== 'completed') {
234+
// Only reset if not completed (use ref to avoid dependency)
235+
if (phaseRef.current !== 'completed') {
231236
setConnectionState('idle')
232237
setPhase('idle')
233238
setProgress(INITIAL_PROGRESS)
@@ -236,7 +241,8 @@ export function useRepoIndexingWebSocket(
236241
}
237242
}
238243
return cleanup
239-
}, [repoId, session?.access_token, connect, cleanup, phase])
244+
// eslint-disable-next-line react-hooks/exhaustive-deps
245+
}, [repoId, session?.access_token, connect, cleanup])
240246

241247
const reset = useCallback(() => {
242248
cleanup()

0 commit comments

Comments
 (0)