1
1
import { Fragment , useMemo } from 'react' ;
2
2
import styled from '@emotion/styled' ;
3
- import type { LocationDescriptor } from 'history' ;
4
3
5
4
import ButtonBar from 'sentry/components/buttonBar' ;
6
5
import { LinkButton } from 'sentry/components/core/button' ;
7
- import Link from 'sentry/components/links/link' ;
8
6
import { generateTraceTarget } from 'sentry/components/quickTrace/utils' ;
9
7
import { t } from 'sentry/locale' ;
10
8
import type { Event } from 'sentry/types/event' ;
11
9
import { type Group , IssueCategory } from 'sentry/types/group' ;
12
10
import type { Organization } from 'sentry/types/organization' ;
13
- import { defined } from 'sentry/utils' ;
14
- import { trackAnalytics } from 'sentry/utils/analytics' ;
15
11
import useRouteAnalyticsParams from 'sentry/utils/routeAnalytics/useRouteAnalyticsParams' ;
16
12
import { useLocation } from 'sentry/utils/useLocation' ;
17
13
import { SectionKey } from 'sentry/views/issueDetails/streamline/context' ;
18
14
import { InterimSection } from 'sentry/views/issueDetails/streamline/interimSection' ;
19
15
import { TraceIssueEvent } from 'sentry/views/issueDetails/traceTimeline/traceIssue' ;
20
16
import { useTraceTimelineEvents } from 'sentry/views/issueDetails/traceTimeline/useTraceTimelineEvents' ;
21
17
import { IssuesTraceWaterfall } from 'sentry/views/performance/newTraceDetails/issuesTraceWaterfall' ;
18
+ import { getTraceLinkForIssue } from 'sentry/views/performance/newTraceDetails/issuesTraceWaterfallOverlay' ;
22
19
import { useIssuesTraceTree } from 'sentry/views/performance/newTraceDetails/traceApi/useIssuesTraceTree' ;
23
20
import { useTrace } from 'sentry/views/performance/newTraceDetails/traceApi/useTrace' ;
24
21
import { useTraceMeta } from 'sentry/views/performance/newTraceDetails/traceApi/useTraceMeta' ;
@@ -59,15 +56,9 @@ interface EventTraceViewInnerProps {
59
56
event : Event ;
60
57
organization : Organization ;
61
58
traceId : string ;
62
- traceTarget : LocationDescriptor ;
63
59
}
64
60
65
- function EventTraceViewInner ( {
66
- event,
67
- organization,
68
- traceId,
69
- traceTarget,
70
- } : EventTraceViewInnerProps ) {
61
+ function EventTraceViewInner ( { event, organization, traceId} : EventTraceViewInnerProps ) {
71
62
const timestamp = new Date ( event . dateReceived ) . getTime ( ) / 1e3 ;
72
63
73
64
const trace = useTrace ( {
@@ -115,34 +106,11 @@ function EventTraceViewInner({
115
106
replay = { null }
116
107
event = { event }
117
108
/>
118
- < IssuesTraceOverlayContainer
119
- to = { getHrefFromTraceTarget ( traceTarget ) }
120
- onClick = { ( ) => {
121
- trackAnalytics ( 'issue_details.view_full_trace_waterfall_clicked' , {
122
- organization,
123
- } ) ;
124
- } }
125
- />
126
109
</ IssuesTraceContainer >
127
110
</ TraceStateProvider >
128
111
) ;
129
112
}
130
113
131
- function getHrefFromTraceTarget ( traceTarget : LocationDescriptor ) {
132
- if ( typeof traceTarget === 'string' ) {
133
- return traceTarget ;
134
- }
135
-
136
- const searchParams = new URLSearchParams ( ) ;
137
- for ( const key in traceTarget . query ) {
138
- if ( defined ( traceTarget . query [ key ] ) ) {
139
- searchParams . append ( key , traceTarget . query [ key ] ) ;
140
- }
141
- }
142
-
143
- return `${ traceTarget . pathname } ?${ searchParams . toString ( ) } ` ;
144
- }
145
-
146
114
function OneOtherIssueEvent ( { event} : { event : Event } ) {
147
115
const { isLoading, oneOtherIssueEvent} = useTraceTimelineEvents ( { event} ) ;
148
116
useRouteAnalyticsParams ( oneOtherIssueEvent ? { has_related_trace_issue : true } : { } ) ;
@@ -163,12 +131,6 @@ const IssuesTraceContainer = styled('div')`
163
131
position: relative;
164
132
` ;
165
133
166
- const IssuesTraceOverlayContainer = styled ( Link ) `
167
- position: absolute;
168
- inset: 0;
169
- z-index: 10;
170
- ` ;
171
-
172
134
interface EventTraceViewProps {
173
135
event : Event ;
174
136
group : Group ;
@@ -216,7 +178,7 @@ export function EventTraceView({group, event, organization}: EventTraceViewProps
216
178
< SwitchToNonEAPTraceButton location = { location } organization = { organization } />
217
179
< LinkButton
218
180
size = "xs"
219
- to = { getHrefFromTraceTarget ( traceTarget ) }
181
+ to = { getTraceLinkForIssue ( traceTarget ) }
220
182
analyticsEventName = "Issue Details: View Full Trace Action Button Clicked"
221
183
analyticsEventKey = "issue_details.view_full_trace_action_button_clicked"
222
184
>
@@ -231,7 +193,6 @@ export function EventTraceView({group, event, organization}: EventTraceViewProps
231
193
event = { event }
232
194
organization = { organization }
233
195
traceId = { traceId }
234
- traceTarget = { traceTarget }
235
196
/>
236
197
) }
237
198
</ InterimSection >
0 commit comments