Skip to content

Commit 68242f2

Browse files
committed
Fix PR comments
1 parent a9f070e commit 68242f2

File tree

4 files changed

+21
-32
lines changed

4 files changed

+21
-32
lines changed

static/app/components/events/interfaces/frame/context.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ export function Context({
168168
: {}
169169
);
170170

171-
const fileExtension = getFileExtension(frame.filename || '') ?? '';
171+
const fileExtension = getFileExtension(frame.filename || frame.absPath || '') ?? '';
172172
const lines = usePrismTokensSourceContext({
173173
contextLines,
174174
lineNo: frame.lineNo,

static/app/components/events/interfaces/frame/deprecatedLine.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {LeadHint} from 'sentry/components/events/interfaces/frame/leadHint';
1414
import {StacktraceLink} from 'sentry/components/events/interfaces/frame/stacktraceLink';
1515
import type {FrameSourceMapDebuggerData} from 'sentry/components/events/interfaces/sourceMapsDebuggerModal';
1616
import {SourceMapsDebuggerModal} from 'sentry/components/events/interfaces/sourceMapsDebuggerModal';
17+
import {useStacktraceContext} from 'sentry/components/events/interfaces/stackTraceContext';
1718
import {getThreadById} from 'sentry/components/events/interfaces/utils';
1819
import {StrictClick} from 'sentry/components/strictClick';
1920
import {IconChevron, IconFix, IconRefresh} from 'sentry/icons';
@@ -26,9 +27,7 @@ import type {
2627
import type {PlatformKey} from 'sentry/types/project';
2728
import type {StacktraceType} from 'sentry/types/stacktrace';
2829
import {trackAnalytics} from 'sentry/utils/analytics';
29-
import {useDetailedProject} from 'sentry/utils/project/useDetailedProject';
3030
import {useOrganization} from 'sentry/utils/useOrganization';
31-
import {useProjects} from 'sentry/utils/useProjects';
3231
import {withSentryAppComponents} from 'sentry/utils/withSentryAppComponents';
3332
import {SectionKey} from 'sentry/views/issueDetails/streamline/context';
3433

@@ -112,21 +111,11 @@ function DeprecatedLine({
112111
components,
113112
}: Props) {
114113
const organization = useOrganization();
115-
const {projects} = useProjects();
116-
const project = useMemo(
117-
() => projects.find(p => p.id === event.projectID),
118-
[projects, event]
119-
);
114+
const {hasScmSourceContext} = useStacktraceContext();
120115
const [isHovering, setIsHovering] = useState(false);
121116
const [isExpanded, setIsExpanded] = useState(initialExpanded ?? false);
122117
const platform = getPlatform(data.platform, propPlatform ?? 'other');
123118
const leadsToApp = !data.inApp && (nextFrame?.inApp || !nextFrame);
124-
const hasScmFeature = organization.features.includes('scm-source-context');
125-
const {data: detailedProject} = useDetailedProject(
126-
{orgSlug: organization.slug, projectSlug: project?.slug ?? ''},
127-
{enabled: hasScmFeature && !!project}
128-
);
129-
const hasScmSourceContext = hasScmFeature && !!detailedProject?.scmSourceContextEnabled;
130119

131120
const isExpandable = useMemo((): boolean => {
132121
return !!(

static/app/components/events/interfaces/nativeFrame.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type {MouseEvent} from 'react';
2-
import {Fragment, useMemo, useState} from 'react';
2+
import {Fragment, useState} from 'react';
33
import styled from '@emotion/styled';
44

55
import {Tag} from '@sentry/scraps/badge';
@@ -42,9 +42,6 @@ import type {
4242
import type {PlatformKey} from 'sentry/types/project';
4343
import {StackView, type StacktraceType} from 'sentry/types/stacktrace';
4444
import {defined} from 'sentry/utils';
45-
import {useDetailedProject} from 'sentry/utils/project/useDetailedProject';
46-
import {useOrganization} from 'sentry/utils/useOrganization';
47-
import {useProjects} from 'sentry/utils/useProjects';
4845
import {useSyncedLocalStorageState} from 'sentry/utils/useSyncedLocalStorageState';
4946
import {withSentryAppComponents} from 'sentry/utils/withSentryAppComponents';
5047
import {SectionKey, useIssueDetails} from 'sentry/views/issueDetails/streamline/context';
@@ -107,7 +104,7 @@ function NativeFrame({
107104
const isDartAsyncSuspensionFrame =
108105
frame.filename === '<asynchronous suspension>' ||
109106
frame.absPath === '<asynchronous suspension>';
110-
const {displayOptions, stackView} = useStacktraceContext();
107+
const {displayOptions, stackView, hasScmSourceContext} = useStacktraceContext();
111108

112109
const {sectionData} = useIssueDetails();
113110
const debugSectionConfig = sectionData[SectionKey.DEBUGMETA];
@@ -133,19 +130,6 @@ function NativeFrame({
133130
// We know the debug section is rendered (only once streamline ui is enabled)
134131
(hasStreamlinedUI ? !!debugSectionConfig : true);
135132

136-
const organization = useOrganization();
137-
const {projects} = useProjects();
138-
const project = useMemo(
139-
() => projects.find(p => p.id === event.projectID),
140-
[projects, event]
141-
);
142-
const hasScmFeature = organization.features.includes('scm-source-context');
143-
const {data: detailedProject} = useDetailedProject(
144-
{orgSlug: organization.slug, projectSlug: project?.slug ?? ''},
145-
{enabled: hasScmFeature && defined(project)}
146-
);
147-
const hasScmSourceContext = hasScmFeature && !!detailedProject?.scmSourceContextEnabled;
148-
149133
const leadsToApp = !frame.inApp && (nextFrame?.inApp || !nextFrame);
150134
const expandable = isExpandable({
151135
frame,

static/app/components/events/interfaces/stackTraceContext.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import {createContext, useContext, useMemo, useState} from 'react';
22

33
import {StackType, StackView} from 'sentry/types/stacktrace';
4+
import {defined} from 'sentry/utils';
5+
import {useDetailedProject} from 'sentry/utils/project/useDetailedProject';
46
import {useLocalStorageState} from 'sentry/utils/useLocalStorageState';
57
import {useOrganization} from 'sentry/utils/useOrganization';
68

@@ -41,6 +43,10 @@ interface StacktraceContextType {
4143
* This should only be used to control the full/relevant toggle.
4244
*/
4345
forceFullStackTrace: boolean;
46+
/**
47+
* Whether the project has SCM source context enabled
48+
*/
49+
hasScmSourceContext: boolean;
4450
/**
4551
* Display full stack trace or filter to relevant frames.
4652
* This should only be used to control the full/relevant toggle.
@@ -79,6 +85,7 @@ const IssueStacktraceContext = createContext<StacktraceContextType>({
7985
stackType: StackType.ORIGINAL,
8086
displayOptions: [],
8187
setDisplayOptions: () => {},
88+
hasScmSourceContext: false,
8289
isFullStackTrace: true,
8390
forceFullStackTrace: false,
8491
setIsFullStackTrace: () => {},
@@ -94,6 +101,13 @@ export function StacktraceContext({
94101
defaultIsNewestFramesFirst = true,
95102
}: StackTraceContextOptions) {
96103
const organization = useOrganization();
104+
const hasScmFeature = organization.features.includes('scm-source-context');
105+
const {data: detailedProject} = useDetailedProject(
106+
{orgSlug: organization.slug, projectSlug: projectSlug ?? ''},
107+
{enabled: hasScmFeature && defined(projectSlug)}
108+
);
109+
const hasScmSourceContext = hasScmFeature && !!detailedProject?.scmSourceContextEnabled;
110+
97111
const [isFullStackTrace, setIsFullStackTrace] = useState(false);
98112
const [isNewestFramesFirst, setIsNewestFramesFirst] = useState(
99113
defaultIsNewestFramesFirst
@@ -123,6 +137,7 @@ export function StacktraceContext({
123137
setIsNewestFramesFirst,
124138
displayOptions,
125139
setDisplayOptions,
140+
hasScmSourceContext,
126141
stackView,
127142
stackType,
128143
forceFullStackTrace,
@@ -133,6 +148,7 @@ export function StacktraceContext({
133148
isNewestFramesFirst,
134149
displayOptions,
135150
setDisplayOptions,
151+
hasScmSourceContext,
136152
stackView,
137153
stackType,
138154
]

0 commit comments

Comments
 (0)