mirror of
https://github.com/stablyai/orca.git
synced 2026-09-24 00:02:24 +00:00
fix(renderer): cancel deferred diff model disposal
This commit is contained in:
@@ -12,13 +12,18 @@ export function useDiffSectionModelLifecycle(params: {
|
||||
setSectionRootNode: (node: HTMLDivElement | null) => void
|
||||
} {
|
||||
const disposeDiffModels = useCallback(() => {
|
||||
window.setTimeout(() => {
|
||||
if (disposeTimerRef.current !== null) {
|
||||
window.clearTimeout(disposeTimerRef.current)
|
||||
}
|
||||
disposeTimerRef.current = window.setTimeout(() => {
|
||||
disposeTimerRef.current = null
|
||||
disposeUnattachedMonacoModelPaths(monaco, [
|
||||
`${params.modelPathBase}:original`,
|
||||
`${params.modelPathBase}:modified`
|
||||
])
|
||||
}, 0)
|
||||
}, [params.modelPathBase])
|
||||
const disposeTimerRef = useRef<number | null>(null)
|
||||
const disposeDiffModelsRef = useRef(disposeDiffModels)
|
||||
// Keep callback-ref dispose path on the latest disposer without render-time mutation.
|
||||
useEffect(() => {
|
||||
@@ -38,5 +43,14 @@ export function useDiffSectionModelLifecycle(params: {
|
||||
}
|
||||
}, [disposeDiffModels, params.collapsed])
|
||||
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
if (disposeTimerRef.current !== null) {
|
||||
window.clearTimeout(disposeTimerRef.current)
|
||||
disposeTimerRef.current = null
|
||||
}
|
||||
}
|
||||
}, [])
|
||||
|
||||
return { disposeDiffModels, setSectionRootNode }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user