mirror of
https://github.com/stablyai/orca.git
synced 2026-10-22 08:03:37 +00:00
fix(browser): keep paint retention off store hot paths
This commit is contained in:
@@ -87,7 +87,7 @@ async function renderPane(): Promise<{ renderer: ReactTestRenderer; stream: Subs
|
||||
isActive: true
|
||||
}
|
||||
|
||||
let renderer: ReactTestRenderer | null = null
|
||||
let renderer: ReactTestRenderer
|
||||
await act(async () => {
|
||||
renderer = create(
|
||||
createElement(MobileBrowserPane, {
|
||||
@@ -104,9 +104,6 @@ async function renderPane(): Promise<{ renderer: ReactTestRenderer; stream: Subs
|
||||
)
|
||||
await Promise.resolve()
|
||||
})
|
||||
if (!renderer) {
|
||||
throw new Error('MobileBrowserPane did not render')
|
||||
}
|
||||
const mounted: ReactTestRenderer = renderer
|
||||
const viewport = mounted.root
|
||||
.findAllByType('View')
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useMemo } from 'react'
|
||||
import { useShallow } from 'zustand/react/shallow'
|
||||
import { useAppStore } from '../../store'
|
||||
import { useBrowserMobileDriverForAny } from '../../lib/pane-manager/browser-mobile-driver-state'
|
||||
@@ -25,6 +26,7 @@ export function collectBrowserPageIds(
|
||||
|
||||
// Why: a stable identity keeps the disabled branch from re-running downstream shallow compares.
|
||||
const NO_BROWSER_PAGE_IDS: string[] = []
|
||||
const NO_BROWSER_TABS_BY_WORKTREE: Record<string, BrowserTabPageIdSource[]> = {}
|
||||
|
||||
export function useWorktreeBrowserPageIds(worktreeId: string): string[] {
|
||||
return useAppStore(
|
||||
@@ -46,12 +48,15 @@ export function useBrowserGuestPaintRetention(browserPageIds: readonly string[])
|
||||
// on the driver alone and the guest never mounts, so the driver never flips: a deadlock that
|
||||
// leaves the page unreachable from the phone entirely.
|
||||
export function useAnyBrowserGuestNeedsPaint(enabled: boolean): boolean {
|
||||
const browserPageIds = useAppStore(
|
||||
useShallow((state) =>
|
||||
const browserTabsByWorktree = useAppStore((state) =>
|
||||
enabled ? state.browserTabsByWorktree : NO_BROWSER_TABS_BY_WORKTREE
|
||||
)
|
||||
const browserPageIds = useMemo(
|
||||
() =>
|
||||
enabled
|
||||
? Object.values(state.browserTabsByWorktree).flatMap((tabs) => collectBrowserPageIds(tabs))
|
||||
: NO_BROWSER_PAGE_IDS
|
||||
)
|
||||
? Object.values(browserTabsByWorktree).flatMap((tabs) => collectBrowserPageIds(tabs))
|
||||
: NO_BROWSER_PAGE_IDS,
|
||||
[browserTabsByWorktree, enabled]
|
||||
)
|
||||
return useBrowserGuestPaintRetention(browserPageIds)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user