mirror of
https://github.com/stablyai/orca.git
synced 2026-10-22 08:03:37 +00:00
fix react doctor
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user