@@ -93,6 +93,9 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
9393 const { projectParam, organizationSlug, envParam, runParam, spanParam } =
9494 v3SpanParamsSchema . parse ( params ) ;
9595
96+ const url = new URL ( request . url ) ;
97+ const linkedRunId = url . searchParams . get ( "linkedRunId" ) ?? undefined ;
98+
9699 const presenter = new SpanPresenter ( ) ;
97100
98101 try {
@@ -101,6 +104,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
101104 spanId : spanParam ,
102105 runFriendlyId : runParam ,
103106 userId,
107+ linkedRunId,
104108 } ) ;
105109
106110 return typedjson ( result ) ;
@@ -130,11 +134,13 @@ export function SpanView({
130134 spanId,
131135 spanOverrides,
132136 closePanel,
137+ linkedRunId,
133138} : {
134139 runParam : string ;
135140 spanId : string | undefined ;
136141 spanOverrides ?: SpanOverride ;
137142 closePanel ?: ( ) => void ;
143+ linkedRunId ?: string ;
138144} ) {
139145 const organization = useOrganization ( ) ;
140146 const project = useProject ( ) ;
@@ -143,10 +149,11 @@ export function SpanView({
143149
144150 useEffect ( ( ) => {
145151 if ( spanId === undefined ) return ;
146- fetcher . load (
147- `/resources/orgs/${ organization . slug } /projects/${ project . slug } /env/${ environment . slug } /runs/${ runParam } /spans/${ spanId } `
148- ) ;
149- } , [ organization . slug , project . slug , environment . slug , runParam , spanId ] ) ;
152+ const url = `/resources/orgs/${ organization . slug } /projects/${ project . slug } /env/${
153+ environment . slug
154+ } /runs/${ runParam } /spans/${ spanId } ${ linkedRunId ? `?linkedRunId=${ linkedRunId } ` : "" } `;
155+ fetcher . load ( url ) ;
156+ } , [ organization . slug , project . slug , environment . slug , runParam , spanId , linkedRunId ] ) ;
150157
151158 if ( spanId === undefined ) {
152159 return null ;
@@ -305,7 +312,12 @@ function RunBody({
305312 useEffect ( ( ) => {
306313 if ( resetFetcher . data && resetFetcher . state === "idle" ) {
307314 // Check if the response indicates success
308- if ( resetFetcher . data && typeof resetFetcher . data === "object" && "success" in resetFetcher . data && resetFetcher . data . success === true ) {
315+ if (
316+ resetFetcher . data &&
317+ typeof resetFetcher . data === "object" &&
318+ "success" in resetFetcher . data &&
319+ resetFetcher . data . success === true
320+ ) {
309321 toast . custom (
310322 ( t ) => (
311323 < ToastUI
@@ -574,7 +586,11 @@ function RunBody({
574586 < div className = "flex items-start justify-between gap-2" >
575587 < div className = "flex-1" >
576588 { run . idempotencyKey ? (
577- < CopyableText value = { run . idempotencyKey } copyValue = { run . idempotencyKey } asChild />
589+ < CopyableText
590+ value = { run . idempotencyKey }
591+ copyValue = { run . idempotencyKey }
592+ asChild
593+ />
578594 ) : (
579595 < div className = "break-all" > –</ div >
580596 ) }
@@ -951,7 +967,9 @@ function RunBody({
951967 { run . logsDeletedAt === null ? (
952968 < >
953969 < LinkButton
954- to = { `${ v3LogsPath ( organization , project , environment ) } ?runId=${ runParam } &from=${ new Date ( run . createdAt ) . getTime ( ) - 60000 } ` }
970+ to = { `${ v3LogsPath ( organization , project , environment ) } ?runId=${ runParam } &from=${
971+ new Date ( run . createdAt ) . getTime ( ) - 60000
972+ } `}
955973 variant = "secondary/medium"
956974 >
957975 View logs
@@ -968,8 +986,6 @@ function RunBody({
968986 </ LinkButton >
969987 </ >
970988 ) : null }
971-
972-
973989 </ div >
974990 </ div >
975991 </ div >
0 commit comments