import {Fragment, useEffect, useRef} from 'react'; import {IssueViewNavItems} from 'sentry/components/nav/issueViews/issueViewNavItems'; import {useUpdateGroupSearchViewLastVisited} from 'sentry/components/nav/issueViews/useUpdateGroupSearchViewLastVisited'; import {usePrefersStackedNav} from 'sentry/components/nav/prefersStackedNav'; import {SecondaryNav} from 'sentry/components/nav/secondary'; import {PrimaryNavGroup} from 'sentry/components/nav/types'; import {t} from 'sentry/locale'; import type {RouteComponentProps} from 'sentry/types/legacyReactRouter'; import useOrganization from 'sentry/utils/useOrganization'; import {useParams} from 'sentry/utils/useParams'; import type {IssueView} from 'sentry/views/issueList/issueViews/issueViews'; import {useFetchGroupSearchViews} from 'sentry/views/issueList/queries/useFetchGroupSearchViews'; interface IssuesWrapperProps extends RouteComponentProps { children: React.ReactNode; } export function IssueNavigation({children}: IssuesWrapperProps) { const organization = useOrganization(); const sectionRef = useRef(null); const {viewId} = useParams<{viewId?: string}>(); const {data: groupSearchViews} = useFetchGroupSearchViews({ orgSlug: organization.slug, }); const {mutate: updateViewLastVisited} = useUpdateGroupSearchViewLastVisited(); useEffect(() => { if (groupSearchViews && viewId) { const view = groupSearchViews.find(v => v.id === viewId); if (view) { updateViewLastVisited({viewId: view.id}); } } }, [groupSearchViews, viewId, updateViewLastVisited]); const prefersStackedNav = usePrefersStackedNav(); if (!prefersStackedNav) { return children; } const baseUrl = `/organizations/${organization.slug}/issues`; return ( {t('Issues')} {t('Feed')} {t('Feedback')} {groupSearchViews && ( { const tabId = id ?? `default${index.toString()}`; return { id: tabId, key: tabId, label: name, query: viewQuery, querySort: viewQuerySort, environments: viewEnvironments, projects: isAllProjects ? [-1] : viewProjects, timeFilters: viewTimeFilters, isCommitted: true, }; } )} sectionRef={sectionRef} baseUrl={baseUrl} /> )} {t('Alerts')} {children} ); }