1+ import { useDiffViewerStore } from "@features/code-editor/stores/diffViewerStore" ;
2+ import { usePrDetails } from "@features/git-interaction/hooks/usePrDetails" ;
13import { useCloudChangedFiles } from "@features/task-detail/hooks/useCloudChangedFiles" ;
24import type { FileDiffMetadata } from "@pierre/diffs" ;
35import { processFile } from "@pierre/diffs" ;
@@ -6,6 +8,7 @@ import { useReviewNavigationStore } from "@renderer/features/code-review/stores/
68import type { ChangedFile , Task } from "@shared/types" ;
79import { useMemo } from "react" ;
810import type { DiffOptions } from "../types" ;
11+ import type { PrCommentThread } from "../utils/prCommentAnnotations" ;
912import { InteractiveFileDiff } from "./InteractiveFileDiff" ;
1013import {
1114 DeferredDiffPlaceholder ,
@@ -23,8 +26,12 @@ export function CloudReviewPage({ task }: CloudReviewPageProps) {
2326 const isReviewOpen = useReviewNavigationStore (
2427 ( s ) => ( s . reviewModes [ taskId ] ?? "closed" ) !== "closed" ,
2528 ) ;
29+ const showReviewComments = useDiffViewerStore ( ( s ) => s . showReviewComments ) ;
2630 const { effectiveBranch, prUrl, isRunActive, remoteFiles, isLoading } =
2731 useCloudChangedFiles ( taskId , task , isReviewOpen ) ;
32+ const { commentThreads } = usePrDetails ( prUrl , {
33+ includeComments : isReviewOpen && showReviewComments ,
34+ } ) ;
2835
2936 const allPaths = useMemo ( ( ) => remoteFiles . map ( ( f ) => f . path ) , [ remoteFiles ] ) ;
3037
@@ -44,23 +51,20 @@ export function CloudReviewPage({ task }: CloudReviewPageProps) {
4451 if ( ! prUrl && ! effectiveBranch && remoteFiles . length === 0 ) {
4552 if ( isRunActive ) {
4653 return (
47- < Flex align = "center" justify = "center" height = "100%" >
48- < Flex align = "center" gap = "2" >
49- < Spinner size = "1" />
50- < Text size = "2" color = "gray" >
51- Waiting for changes...
52- </ Text >
54+ < Flex
55+ align = "center"
56+ justify = "center"
57+ height = "100%"
58+ className = "text-gray-10"
59+ >
60+ < Flex direction = "column" align = "center" gap = "2" >
61+ < Spinner size = "2" />
62+ < Text size = "2" > Waiting for changes...</ Text >
5363 </ Flex >
5464 </ Flex >
5565 ) ;
5666 }
57- return (
58- < Flex align = "center" justify = "center" height = "100%" >
59- < Text size = "2" color = "gray" >
60- No file changes yet
61- </ Text >
62- </ Flex >
63- ) ;
67+ return null ;
6468 }
6569
6670 return (
@@ -105,6 +109,7 @@ export function CloudReviewPage({ task }: CloudReviewPageProps) {
105109 options = { diffOptions }
106110 collapsed = { isCollapsed }
107111 onToggle = { ( ) => toggleFile ( file . path ) }
112+ commentThreads = { showReviewComments ? commentThreads : undefined }
108113 />
109114 </ div >
110115 ) ;
@@ -120,13 +125,15 @@ function CloudFileDiff({
120125 options,
121126 collapsed,
122127 onToggle,
128+ commentThreads,
123129} : {
124130 file : ChangedFile ;
125131 taskId : string ;
126132 prUrl : string | null ;
127133 options : DiffOptions ;
128134 collapsed : boolean ;
129135 onToggle : ( ) => void ;
136+ commentThreads ?: Map < number , PrCommentThread > ;
130137} ) {
131138 const fileDiff = useMemo ( ( ) : FileDiffMetadata | undefined => {
132139 if ( ! file . patch ) return undefined ;
@@ -157,6 +164,8 @@ function CloudFileDiff({
157164 fileDiff = { fileDiff }
158165 options = { { ...options , collapsed } }
159166 taskId = { taskId }
167+ prUrl = { prUrl }
168+ commentThreads = { commentThreads }
160169 renderCustomHeader = { ( fd ) => (
161170 < DiffFileHeader
162171 fileDiff = { fd }
0 commit comments