fix(tui): stop repeated review from reopening the last diff file (#55845)

This commit is contained in:
DS 2026-10-15 17:05:00 -04:00 • committed by GitHub
parent 412b2b1d85
commit 3485a7b366
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 1 deletions

View file

@ -355,6 +355,7 @@ export function DiffViewerContent(props: {
const [expandedFileNodes, setExpandedFileNodes] = createSignal<ReadonlySet<number>>(new Set())
const [selectedFileIndex, setSelectedFileIndex] = createSignal<number | undefined>()
const [reviewedFileNames, setReviewedFileNames] = createSignal<ReadonlySet<string>>(new Set())
const [exhaustedFileIndex, setExhaustedFileIndex] = createSignal<number | undefined>()
const [fileMenu, setFileMenu] = createSignal<FileMenuState>()
const patchScrollAcceleration = createMemo(() => getScrollAcceleration(config.data))
const patchFileIndexes = createMemo(() => orderedPatchFileIndexes(flattenFileTree(fileTree())))
@ -370,6 +371,7 @@ export function DiffViewerContent(props: {
setSelectedFileIndex(undefined)
setSelectedHunk(undefined)
setReviewedFileNames(new Set<string>())
setExhaustedFileIndex(undefined)
setFileMenu(undefined)
})
@ -404,6 +406,7 @@ export function DiffViewerContent(props: {
const selectPatchFile = (fileIndex: number) => {
setPendingPatchScrollFileIndex(undefined)
setExhaustedFileIndex(undefined)
revealFileTreeFile(fileIndex)
setSelectedFileIndex(fileIndex)
}
@ -564,6 +567,7 @@ export function DiffViewerContent(props: {
const nextFileIndex =
singlePatch() && !reviewed ? (movePatchFileIndex(patchFileIndexes(), fileIndex, 1) ?? fileIndex) : fileIndex
selectPatchFile(nextFileIndex)
if (singlePatch() && !reviewed && nextFileIndex === fileIndex) setExhaustedFileIndex(fileIndex)
setSelectedHunk(undefined)
scrollToPatchFileIndexAfterRender(nextFileIndex)
}
@ -685,7 +689,9 @@ export function DiffViewerContent(props: {
title: "Toggle selected diff file reviewed",
group: "VCS",
run() {
toggleFileReviewed(selectedFileIndex() ?? currentPatchFileIndex())
const fileIndex = selectedFileIndex() ?? currentPatchFileIndex()
if (fileIndex !== undefined && fileIndex === exhaustedFileIndex()) return
toggleFileReviewed(fileIndex)
},
},
{

View file

@ -1496,6 +1496,9 @@ test.each([80, 160])(
expect(viewer.app.renderer.root.findDescendantById("diff-file-header-2")).toBeDefined()
expect(viewer.app.renderer.root.findDescendantById("diff-file-header-0")).toBeUndefined()
expect(findDiffs(viewer.app.renderer.root)).toHaveLength(0)
viewer.app.mockInput.pressKey("m")
await viewer.app.flush()
expect(findDiffs(viewer.app.renderer.root)).toHaveLength(0)
viewer.app.mockInput.pressKey("?")
await viewer.app.waitForFrame((frame) => frame.includes("Review + next / reopen"))