diff --git a/static/app/utils/analytics/workflowAnalyticsEvents.tsx b/static/app/utils/analytics/workflowAnalyticsEvents.tsx index 6ae8631903d086..b8f327c5608375 100644 --- a/static/app/utils/analytics/workflowAnalyticsEvents.tsx +++ b/static/app/utils/analytics/workflowAnalyticsEvents.tsx @@ -181,6 +181,11 @@ export type TeamInsightsEventParameters = { 'releases_list.click_add_release_health': { project_id: number; }; + 'supergroup.feedback_submitted': { + choice_selected: boolean; + supergroup_id: number; + user_id: string; + }; 'suspect_commit.feedback_submitted': { choice_selected: boolean; group_owner_id: number; @@ -259,5 +264,6 @@ export const workflowEventMap: Record = { 'releases_list.click_add_release_health': 'Releases List: Click Add Release Health', trace_timeline_clicked: 'Trace Timeline Clicked', trace_timeline_more_events_clicked: 'Trace Timeline More Events Clicked', + 'supergroup.feedback_submitted': 'Supergroup Feedback Submitted', 'suspect_commit.feedback_submitted': 'Suspect Commit Feedback Submitted', }; diff --git a/static/app/views/issueList/supergroups/supergroupDrawer.tsx b/static/app/views/issueList/supergroups/supergroupDrawer.tsx index 885bdd9524464a..66f378c2bbe65b 100644 --- a/static/app/views/issueList/supergroups/supergroupDrawer.tsx +++ b/static/app/views/issueList/supergroups/supergroupDrawer.tsx @@ -1,8 +1,8 @@ import {Fragment} from 'react'; import styled from '@emotion/styled'; +import {Badge} from '@sentry/scraps/badge'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; -import {Link} from '@sentry/scraps/link'; import {Heading, Text} from '@sentry/scraps/text'; import { @@ -15,12 +15,11 @@ import {GroupList} from 'sentry/components/issues/groupList'; import {ALL_ACCESS_PROJECTS} from 'sentry/components/pageFilters/constants'; import {IconFocus} from 'sentry/icons'; import {t} from 'sentry/locale'; -import {useOrganization} from 'sentry/utils/useOrganization'; import {StyledMarkedText} from 'sentry/views/issueList/pages/supergroups'; +import {SupergroupFeedback} from 'sentry/views/issueList/supergroups/supergroupFeedback'; import type {SupergroupDetail} from 'sentry/views/issueList/supergroups/types'; export function SupergroupDetailDrawer({supergroup}: {supergroup: SupergroupDetail}) { - const organization = useOrganization(); const placeholderRows = Math.min(supergroup.group_ids.length, 10); const issueIdQuery = `issue.id:[${supergroup.group_ids.join(',')}]`; @@ -28,29 +27,25 @@ export function SupergroupDetailDrawer({supergroup}: {supergroup: SupergroupDeta - - {`SG-${supergroup.id}`} - - ), - }, - ]} - /> - - {t('View All Issues')} ({supergroup.group_ids.length}) - + + + {`SG-${supergroup.id}`} + + ), + }, + ]} + /> + {t('Experimental')} + + diff --git a/static/app/views/issueList/supergroups/supergroupFeedback.tsx b/static/app/views/issueList/supergroups/supergroupFeedback.tsx new file mode 100644 index 00000000000000..5af7397183ee43 --- /dev/null +++ b/static/app/views/issueList/supergroups/supergroupFeedback.tsx @@ -0,0 +1,70 @@ +import {useCallback, useState} from 'react'; +import styled from '@emotion/styled'; + +import {Button} from '@sentry/scraps/button'; +import {Flex} from '@sentry/scraps/layout'; + +import {IconThumb} from 'sentry/icons'; +import {t} from 'sentry/locale'; +import {trackAnalytics} from 'sentry/utils/analytics'; +import {useOrganization} from 'sentry/utils/useOrganization'; +import {useUser} from 'sentry/utils/useUser'; + +interface SupergroupFeedbackProps { + supergroupId: number; +} + +export function SupergroupFeedback({supergroupId}: SupergroupFeedbackProps) { + const [feedbackSubmitted, setFeedbackSubmitted] = useState(false); + const organization = useOrganization(); + const user = useUser(); + + const handleFeedback = useCallback( + (isAccurate: boolean) => { + trackAnalytics('supergroup.feedback_submitted', { + choice_selected: isAccurate, + supergroup_id: supergroupId, + user_id: user.id, + organization, + }); + + setFeedbackSubmitted(true); + }, + [supergroupId, organization, user] + ); + + return ( + + {feedbackSubmitted ? ( + t('Thanks!') + ) : ( + + {t('Help us improve this feature. Is this grouping accurate?')} + +