| ... | ... | @@ -37,6 +37,7 @@ import { orderDiffFiles } from "./pullRequestFileOrder.logic"; |
| 37 | 37 | import { |
| 38 | 38 | buildFileDiffRenderKey, |
| 39 | 39 | fnv1a32, |
| 40 | getDiffLineStat, |
| 40 | 41 | getRenderablePatch, |
| 41 | 42 | resolveDiffThemeName, |
| 42 | 43 | resolveFileDiffPath, |
| ... | ... | @@ -596,6 +597,23 @@ function PullRequestCodeTab({ |
| 596 | 597 | ), |
| 597 | 598 | [loadedSlices], |
| 598 | 599 | ); |
| 600 | const sourceFileStats = useMemo( |
| 601 | () => |
| 602 | new Map( |
| 603 | parsedSlices.flatMap((parsed) => |
| 604 | parsed?.kind === "files" |
| 605 | ? parsed.files.map( |
| 606 | (file, index) => |
| 607 | [ |
| 608 | buildFileDiffRenderKey(file), |
| 609 | getDiffLineStat([parsed.sourceFiles[index] ?? file]), |
| 610 | ] as const, |
| 611 | ) |
| 612 | : [], |
| 613 | ), |
| 614 | ), |
| 615 | [parsedSlices], |
| 616 | ); |
| 599 | 617 | const fileKeys = useMemo(() => items.map((item) => item.id), [items]); |
| 600 | 618 | const collapsedFileKeys = useMemo( |
| 601 | 619 | () => new Set(items.filter((item) => item.collapsed === true).map((item) => item.id)), |
| ... | ... | @@ -811,12 +829,8 @@ function PullRequestCodeTab({ |
| 811 | 829 | const renderHeaderMetadata = useCallback( |
| 812 | 830 | (item: CodeViewItem<ReviewAnnotationGroup>) => { |
| 813 | 831 | if (item.type !== "diff") return null; |
| 814 | | let additions = 0; |
| 815 | | let deletions = 0; |
| 816 | | for (const hunk of item.fileDiff.hunks) { |
| 817 | | additions += hunk.additionLines; |
| 818 | | deletions += hunk.deletionLines; |
| 819 | | } |
| 832 | let { additions, deletions } = |
| 833 | sourceFileStats.get(item.id) ?? getDiffLineStat([item.fileDiff]); |
| 820 | 834 | const path = resolveFileDiffPath(item.fileDiff); |
| 821 | 835 | if (additions === 0 && deletions === 0) { |
| 822 | 836 | const withheld = omittedFileStats.get(path); |
| ... | ... | @@ -864,7 +878,7 @@ function PullRequestCodeTab({ |
| 864 | 878 | </span> |
| 865 | 879 | ); |
| 866 | 880 | }, |
| 867 | | [omittedFileStats], |
| 881 | [omittedFileStats, sourceFileStats], |
| 868 | 882 | ); |
| 869 | 883 | |
| 870 | 884 | const diffViewOptions = useMemo( |