Skip to content

Commit d131e41

Browse files
authored
chore(issue-details): Consolidate share experience (#91093)
combines the public and internal share modals into one. now only one modal will control all the different methods to share an issue. ![Screenshot 2025-05-06 at 4 24 04 PM](https://github.com/user-attachments/assets/98c3327e-2d21-451f-bd6d-3bcf4f4bf571)
1 parent 9c272df commit d131e41

File tree

7 files changed

+345
-360
lines changed

7 files changed

+345
-360
lines changed

static/app/views/issueDetails/actions/index.spec.tsx

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -182,30 +182,6 @@ describe('GroupActions', function () {
182182
});
183183
});
184184

185-
it('opens share modal from more actions dropdown', async () => {
186-
const org = {
187-
...organization,
188-
features: ['shared-issues'],
189-
};
190-
191-
render(
192-
<Fragment>
193-
<GlobalModal />
194-
<GroupActions group={group} project={project} disabled={false} event={null} />
195-
</Fragment>,
196-
{
197-
organization: org,
198-
deprecatedRouterMocks: true,
199-
}
200-
);
201-
202-
await userEvent.click(screen.getByLabelText('More Actions'));
203-
await userEvent.click(await screen.findByText('Publish'));
204-
205-
const modal = screen.getByRole('dialog');
206-
expect(within(modal).getByText('Publish Issue')).toBeInTheDocument();
207-
});
208-
209185
describe('delete', function () {
210186
it('opens delete confirm modal from more actions dropdown', async () => {
211187
const router = RouterFixture();

static/app/views/issueDetails/actions/index.tsx

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ import {useNavigate} from 'sentry/utils/useNavigate';
4949
import useOrganization from 'sentry/utils/useOrganization';
5050
import {hasDatasetSelector} from 'sentry/views/dashboards/utils';
5151
import {NewIssueExperienceButton} from 'sentry/views/issueDetails/actions/newIssueExperienceButton';
52-
import PublishIssueModal from 'sentry/views/issueDetails/actions/publishModal';
5352
import ShareIssueModal from 'sentry/views/issueDetails/actions/shareModal';
5453
import SubscribeAction from 'sentry/views/issueDetails/actions/subscribeAction';
5554
import {Divider} from 'sentry/views/issueDetails/divider';
@@ -96,9 +95,9 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
9695
archiveUntilOccurrence: archiveUntilOccurrenceCap,
9796
delete: deleteCap,
9897
deleteAndDiscard: deleteDiscardCap,
99-
share: shareCap,
10098
resolve: resolveCap,
10199
resolveInRelease: resolveInReleaseCap,
100+
share: shareCap,
102101
},
103102
customCopy: {resolution: resolvedCopyCap},
104103
discover: discoverCap,
@@ -216,7 +215,7 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
216215
openReprocessEventModal({organization, groupId: group.id});
217216
};
218217

219-
const onToggleShare = () => {
218+
const onTogglePublicShare = () => {
220219
const newIsPublic = !group.isPublic;
221220
if (newIsPublic) {
222221
trackAnalytics('issue.shared_publicly', {
@@ -336,23 +335,9 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
336335
organization={organization}
337336
groupId={group.id}
338337
event={event}
339-
/>
340-
));
341-
};
342-
343-
const openPublishModal = () => {
344-
trackAnalytics('issue_details.publish_issue_modal_opened', {
345-
organization,
346-
streamline: hasStreamlinedUI,
347-
...getAnalyticsDataForGroup(group),
348-
});
349-
openModal(modalProps => (
350-
<PublishIssueModal
351-
{...modalProps}
352-
organization={organization}
353-
projectSlug={group.project.slug}
354-
groupId={group.id}
355-
onToggle={onToggleShare}
338+
onToggle={onTogglePublicShare}
339+
projectSlug={project.slug}
340+
hasIssueShare={shareCap.enabled}
356341
/>
357342
));
358343
};
@@ -463,6 +448,7 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
463448
icon={<IconUpload />}
464449
aria-label={t('Share')}
465450
title={t('Share Issue')}
451+
disabled={disabled}
466452
analyticsEventKey="issue_details.share_action_clicked"
467453
analyticsEventName="Issue Details: Share Action Clicked"
468454
/>
@@ -494,6 +480,12 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
494480
...(hasStreamlinedUI
495481
? []
496482
: [
483+
{
484+
key: 'share',
485+
label: t('Share'),
486+
onAction: openShareModal,
487+
disabled,
488+
},
497489
{
498490
key: group.isSubscribed ? 'unsubscribe' : 'subscribe',
499491
className: 'hidden-sm hidden-md hidden-lg',
@@ -516,13 +508,6 @@ export function GroupActions({group, project, disabled, event}: GroupActionsProp
516508
details: !group.inbox || disabled ? t('Issue has been reviewed') : undefined,
517509
onAction: () => onUpdate({inbox: false}),
518510
},
519-
{
520-
key: 'publish',
521-
label: t('Publish'),
522-
disabled: disabled || !shareCap.enabled,
523-
hidden: !organization.features.includes('shared-issues'),
524-
onAction: openPublishModal,
525-
},
526511
{
527512
key: bookmarkKey,
528513
label: bookmarkTitle,

static/app/views/issueDetails/actions/publishModal.spec.tsx

Lines changed: 0 additions & 85 deletions
This file was deleted.

0 commit comments

Comments
 (0)