import {useEffect} from 'react'; import {RouteComponentProps} from 'react-router'; import {fetchOrganizationEnvironments} from 'sentry/actionCreators/environments'; import {Client} from 'sentry/api'; import LoadingError from 'sentry/components/loadingError'; import LoadingIndicator from 'sentry/components/loadingIndicator'; import {t} from 'sentry/locale'; import OrganizationEnvironmentsStore from 'sentry/stores/organizationEnvironmentsStore'; import {useLegacyStore} from 'sentry/stores/useLegacyStore'; import {Environment, Group, Organization, PageFilters, Project} from 'sentry/types'; import {Event} from 'sentry/types/event'; import withApi from 'sentry/utils/withApi'; import withOrganization from 'sentry/utils/withOrganization'; import withPageFilters from 'sentry/utils/withPageFilters'; import {ReprocessingStatus} from '../utils'; import GroupEventDetails from './groupEventDetails'; export interface GroupEventDetailsProps extends RouteComponentProps<{groupId: string; orgId: string; eventId?: string}, {}> { api: Client; event: Event; eventError: boolean; group: Group; groupReprocessingStatus: ReprocessingStatus; loadingEvent: boolean; onRetry: () => void; organization: Organization; project: Project; selection: PageFilters; } export function GroupEventDetailsContainer(props: GroupEventDetailsProps) { const state = useLegacyStore(OrganizationEnvironmentsStore); useEffect(() => { if (!state.environments && !state.error) { fetchOrganizationEnvironments(props.api, props.organization.slug); } // XXX: Missing dependencies, but it reflects the old of componentDidMount }, [props.api]); if (state.error) { return ( ); } // null implies loading state if (!state.environments) { return ; } const {selection, ...otherProps} = props; const environments: Environment[] = state.environments.filter(env => selection.environments.includes(env.name) ); return ; } export default withApi(withOrganization(withPageFilters(GroupEventDetailsContainer)));