import {RouteComponentProps} from 'react-router'; import EmptyStateWarning from 'sentry/components/emptyStateWarning'; import ErrorBoundary from 'sentry/components/errorBoundary'; import LoadingIndicator from 'sentry/components/loadingIndicator'; import PageHeading from 'sentry/components/pageHeading'; import Pagination from 'sentry/components/pagination'; import {Panel} from 'sentry/components/panels'; import {t} from 'sentry/locale'; import {PageContent} from 'sentry/styles/organization'; import space from 'sentry/styles/space'; import {Activity, Organization} from 'sentry/types'; import routeTitle from 'sentry/utils/routeTitle'; import withOrganization from 'sentry/utils/withOrganization'; import AsyncView from 'sentry/views/asyncView'; import ActivityFeedItem from './activityFeedItem'; type Props = { organization: Organization; } & RouteComponentProps<{orgId: string}, {}> & AsyncView['props']; type State = { activity: Activity[]; } & AsyncView['state']; class OrganizationActivity extends AsyncView { getTitle() { const {orgId} = this.props.params; return routeTitle(t('Activity'), orgId, false); } getEndpoints(): ReturnType { return [['activity', `/organizations/${this.props.params.orgId}/activity/`]]; } renderLoading() { return this.renderBody(); } renderEmpty() { return (

{t('Nothing to show here, move along.')}

); } renderError(error?: Error, disableLog = false): React.ReactNode { const {errors} = this.state; const notFound = Object.values(errors).find(resp => resp && resp.status === 404); if (notFound) { return this.renderBody(); } return super.renderError(error, disableLog); } renderBody() { const {loading, activity, activityPageLinks} = this.state; return ( {t('Activity')} {loading && } {!loading && !activity?.length && this.renderEmpty()} {!loading && activity?.length > 0 && (
{activity.map(item => ( ))}
)}
{activityPageLinks && ( )}
); } } export default withOrganization(OrganizationActivity);