1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import {useCallback} from 'react';
- import styled from '@emotion/styled';
- import * as Layout from 'sentry/components/layouts/thirds';
- import {space} from 'sentry/styles/space';
- import type {Group} from 'sentry/types/group';
- import type {RouteComponentProps} from 'sentry/types/legacyReactRouter';
- import type {Project} from 'sentry/types/project';
- import {browserHistory} from 'sentry/utils/browserHistory';
- import {ISSUE_PROPERTY_FIELDS} from 'sentry/utils/fields';
- import normalizeUrl from 'sentry/utils/url/normalizeUrl';
- import useCleanQueryParamsOnRouteLeave from 'sentry/utils/useCleanQueryParamsOnRouteLeave';
- import useOrganization from 'sentry/utils/useOrganization';
- import {EventList} from 'sentry/views/issueDetails/streamline/eventList';
- import {EventSearch} from 'sentry/views/issueDetails/streamline/eventSearch';
- import {useHasStreamlinedUI} from 'sentry/views/issueDetails/utils';
- import AllEventsTable from './allEventsTable';
- interface Props extends RouteComponentProps<{groupId: string}, {}> {
- environments: string[];
- group: Group;
- project: Project;
- }
- export const ALL_EVENTS_EXCLUDED_TAGS = [
- 'environment',
- 'performance.issue_ids',
- 'transaction.op',
- 'transaction.status',
- ...ISSUE_PROPERTY_FIELDS,
- ];
- function GroupEvents({params, location, group, environments}: Props) {
- const organization = useOrganization();
- const {groupId} = params;
- useCleanQueryParamsOnRouteLeave({
- fieldsToClean: ['cursor', 'query'],
- shouldClean: newLocation => newLocation.pathname.includes(`/issues/${group.id}/`),
- });
- const handleSearch = useCallback(
- (query: string) =>
- browserHistory.push(
- normalizeUrl({
- pathname: `/organizations/${organization.slug}/issues/${groupId}/events/`,
- query: {...location.query, query},
- })
- ),
- [location, organization, groupId]
- );
- const query = location.query?.query ?? '';
- return (
- <Layout.Body>
- <Layout.Main fullWidth>
- <AllEventsFilters>
- <EventSearch
- environments={environments}
- group={group}
- handleSearch={handleSearch}
- query={query}
- />
- </AllEventsFilters>
- <AllEventsTable
- issueId={group.id}
- location={location}
- organization={organization}
- group={group}
- excludedTags={ALL_EVENTS_EXCLUDED_TAGS}
- />
- </Layout.Main>
- </Layout.Body>
- );
- }
- const AllEventsFilters = styled('div')`
- margin-bottom: ${space(2)};
- `;
- // TODO(streamlined-ui): Remove this file completely and change rotue to new events list
- function IssueEventsList(props: Props) {
- const hasStreamlinedUI = useHasStreamlinedUI();
- if (hasStreamlinedUI) {
- return <EventList {...props} />;
- }
- return <GroupEvents {...props} />;
- }
- export default IssueEventsList;
|