fix react doctor

This commit is contained in:
Jinjing
2026-08-14 18:42:35 -07:00
parent 1040cca429
commit c4d382aadc
2 changed files with 20 additions and 20 deletions
@@ -1,4 +1,4 @@
import { useCallback, useEffect, useRef, useState } from 'react'
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'
import { toast } from 'sonner'
import { useAppStore } from '@/store'
import { translate } from '@/i18n/i18n'
@@ -26,7 +26,9 @@ export function usePendingSidebarReveal(args: PendingSidebarRevealArgs): void {
const pendingRevealRetryRef = useRef<{ worktreeId: string; count: number } | null>(null)
const pendingRowRevealRetryRef = useRef<{ rowKey: string; count: number } | null>(null)
const argsRef = useRef(args)
argsRef.current = args
useLayoutEffect(() => {
argsRef.current = args
})
const {
pendingRevealWorktree,
@@ -32,10 +32,6 @@ export function useWorktreeListVirtualizer(args: {
suppressMeasurementAdjustmentUntilRef: React.MutableRefObject<number>
}) {
const { renderRows, firstHeaderIndex, scrollRef, scrollOffsetRef } = args
const renderRowsRef = useRef(renderRows)
renderRowsRef.current = renderRows
const firstHeaderIndexRef = useRef(firstHeaderIndex)
firstHeaderIndexRef.current = firstHeaderIndex
const stickyHeaderIndexes = useMemo(() => getStickyHeaderIndexes(renderRows), [renderRows])
const activeStickyHeaderIndexRef = useRef<number | null>(null)
const activeStickyHostIndexRef = useRef<number | null>(null)
@@ -51,11 +47,14 @@ export function useWorktreeListVirtualizer(args: {
},
[renderRows]
)
const getExpectedVirtualRowKey = useCallback((element: Element) => {
const index = getVirtualRowIndex(element)
const row = index === null ? undefined : renderRowsRef.current[index]
return row ? getRenderRowKey(row) : null
}, [])
const getExpectedVirtualRowKey = useCallback(
(element: Element) => {
const index = getVirtualRowIndex(element)
const row = index === null ? undefined : renderRows[index]
return row ? getRenderRowKey(row) : null
},
[renderRows]
)
const isCurrentVirtualRowElement = useCallback(
(element: Element) => {
const expectedKey = getExpectedVirtualRowKey(element)
@@ -80,9 +79,9 @@ export function useWorktreeListVirtualizer(args: {
return (
measured?.size ??
estimateRenderRowSize(
renderRowsRef.current,
renderRows,
index ?? -1,
firstHeaderIndexRef.current,
firstHeaderIndex,
activeStickyHeaderIndexRef.current
)
)
@@ -90,19 +89,18 @@ export function useWorktreeListVirtualizer(args: {
const index = getVirtualRowIndex(element)
if (
index !== null &&
(renderRowsRef.current[index]?.type === 'header' ||
renderRowsRef.current[index]?.type === 'host-header')
(renderRows[index]?.type === 'header' || renderRows[index]?.type === 'host-header')
) {
return estimateRenderRowSize(
renderRowsRef.current,
renderRows,
index,
firstHeaderIndexRef.current,
firstHeaderIndex,
activeStickyHeaderIndexRef.current
)
}
return measureVirtualElementSize(element, entry, instance)
},
[isCurrentVirtualRowElement]
[firstHeaderIndex, isCurrentVirtualRowElement, renderRows]
)
const virtualizer = useVirtualizer({
@@ -123,10 +121,10 @@ export function useWorktreeListVirtualizer(args: {
return extractWorktreeVirtualRowIndexes({
range,
stickyHeaderIndexes,
rows: renderRowsRef.current
rows: renderRows
})
},
[stickyHeaderIndexes]
[renderRows, stickyHeaderIndexes]
),
overscan: 10,
gap: WORKTREE_SIDEBAR_VIRTUAL_ROW_GAP,