diff --git a/static/app/components/profiling/profilingTransactionHovercard.tsx b/static/app/components/profiling/profilingTransactionHovercard.tsx index 0d3c3461ebc4b8..b71fed6f22a6cf 100644 --- a/static/app/components/profiling/profilingTransactionHovercard.tsx +++ b/static/app/components/profiling/profilingTransactionHovercard.tsx @@ -21,6 +21,7 @@ import { generateProfileSummaryRouteWithQuery, } from 'sentry/utils/profiling/routes'; import {useLocation} from 'sentry/utils/useLocation'; +import {profilesRouteWithQuery} from 'sentry/views/performance/transactionSummary/transactionProfiles/utils'; import {Button} from '../button'; import Link from '../links/link'; @@ -37,50 +38,73 @@ export function ProfilingTransactionHovercard(props: ProfilingTransactionHoverca const {project, transaction, organization} = props; const {query} = useLocation(); - const linkToSummary = generateProfileSummaryRouteWithQuery({ + if (!organization.features.includes('continuous-profiling-compat')) { + const linkToSummary = generateProfileSummaryRouteWithQuery({ + query, + orgSlug: organization.slug, + projectSlug: project.slug, + transaction, + }); + + const triggerLink = ( + + trackAnalytics('profiling_views.go_to_transaction', { + organization, + source: 'transaction_hovercard.trigger', + }) + } + > + {transaction} + + ); + + return ( + + {transaction} + + + } + body={ + + } + showUnderline + > + {triggerLink} + + ); + } + + const linkToSummary = profilesRouteWithQuery({ query, orgSlug: organization.slug, - projectSlug: project.slug, + projectID: project.id, transaction, }); - const triggerLink = ( + return ( trackAnalytics('profiling_views.go_to_transaction', { organization, - source: 'transaction_hovercard.trigger', + source: 'profiling.landing.transaction_table', }) } > {transaction} ); - - return ( - - {transaction} - - - } - body={ - - } - showUnderline - > - {triggerLink} - - ); } export function ProfilingTransactionHovercardBody({ diff --git a/static/app/utils/analytics/profilingAnalyticsEvents.tsx b/static/app/utils/analytics/profilingAnalyticsEvents.tsx index e86e4f7158311b..639299e83224ee 100644 --- a/static/app/utils/analytics/profilingAnalyticsEvents.tsx +++ b/static/app/utils/analytics/profilingAnalyticsEvents.tsx @@ -13,6 +13,7 @@ type ProfilingEventSource = | 'profiling.global_suspect_functions' | 'profiling.issue.function_regression.list' | 'profiling.issue.function_regression.transactions' + | 'profiling.landing.transaction_table' | 'profiling_transaction.suspect_functions_table' | 'profiling_transaction.slowest_functions_table' | 'profiling_transaction.regressed_functions_table' diff --git a/static/app/utils/profiling/hooks/useProfileEvents.tsx b/static/app/utils/profiling/hooks/useProfileEvents.tsx index 217a62dd2d83ec..151b27584b2b20 100644 --- a/static/app/utils/profiling/hooks/useProfileEvents.tsx +++ b/static/app/utils/profiling/hooks/useProfileEvents.tsx @@ -14,6 +14,7 @@ export interface UseProfileEventsOptions fields: readonly F[]; referrer: string; sort: Sort; + continuousProfilingCompat?: boolean; cursor?: string; datetime?: PageFilters['datetime']; enabled?: boolean; @@ -29,6 +30,7 @@ export function useProfileEvents({ referrer, query, sort, + continuousProfilingCompat, cursor, enabled = true, refetchOnMount = true, @@ -38,7 +40,11 @@ export function useProfileEvents({ const organization = useOrganization(); const {selection} = usePageFilters(); - query = `has:profile.id ${query ? `(${query})` : ''}`; + if (continuousProfilingCompat) { + query = `(has:profile.id OR (has:profiler.id has:thread.id)) ${query ? `(${query})` : ''}`; + } else { + query = `has:profile.id ${query ? `(${query})` : ''}`; + } const path = `/organizations/${organization.slug}/events/`; const endpointOptions = { diff --git a/static/app/views/profiling/content.tsx b/static/app/views/profiling/content.tsx index fbf2ca516c0330..d97dad89d5ed96 100644 --- a/static/app/views/profiling/content.tsx +++ b/static/app/views/profiling/content.tsx @@ -297,6 +297,9 @@ function ProfilingContent({location}: ProfilingContentProps) { query, sort, referrer: 'api.profiling.landing-table', + continuousProfilingCompat: organization.features.includes( + 'continuous-profiling-compat' + ), }); const transactionsError =