import type {RouteComponentProps} from 'react-router'; import { addErrorMessage, addLoadingMessage, addSuccessMessage, } from 'sentry/actionCreators/indicator'; import {Button} from 'sentry/components/button'; import EmptyMessage from 'sentry/components/emptyMessage'; import Panel from 'sentry/components/panels/panel'; import PanelBody from 'sentry/components/panels/panelBody'; import PanelHeader from 'sentry/components/panels/panelHeader'; import {IconAdd} from 'sentry/icons'; import {t} from 'sentry/locale'; import type {ApiApplication} from 'sentry/types'; import DeprecatedAsyncView from 'sentry/views/deprecatedAsyncView'; import Row from 'sentry/views/settings/account/apiApplications/row'; import SettingsPageHeader from 'sentry/views/settings/components/settingsPageHeader'; const ROUTE_PREFIX = '/settings/account/api/'; type Props = RouteComponentProps<{}, {}>; type State = { appList: ApiApplication[]; } & DeprecatedAsyncView['state']; class ApiApplications extends DeprecatedAsyncView { getEndpoints(): ReturnType { return [['appList', '/api-applications/']]; } getTitle() { return t('API Applications'); } handleCreateApplication = async () => { addLoadingMessage(); try { const app = await this.api.requestPromise('/api-applications/', { method: 'POST', }); addSuccessMessage(t('Created a new API Application')); this.props.router.push(`${ROUTE_PREFIX}applications/${app.id}/`); } catch { addErrorMessage(t('Unable to remove application. Please try again.')); } }; handleRemoveApplication = (app: ApiApplication) => { this.setState({ appList: this.state.appList.filter(a => a.id !== app.id), }); }; renderBody() { const isEmpty = this.state.appList.length === 0; return (
} > {t('Create New Application')} } /> {t('Application Name')} {!isEmpty ? ( this.state.appList.map(app => ( )) ) : ( {t("You haven't created any applications yet.")} )}
); } } export default ApiApplications;