import {Fragment} from 'react'; import {browserHistory, RouteComponentProps} from 'react-router'; import {addErrorMessage, addSuccessMessage} from 'sentry/actionCreators/indicator'; import {removeTeam, updateTeamSuccess} from 'sentry/actionCreators/teams'; import Button from 'sentry/components/button'; import Confirm from 'sentry/components/confirm'; import Field from 'sentry/components/forms/field'; import Form, {FormProps} from 'sentry/components/forms/form'; import JsonForm from 'sentry/components/forms/jsonForm'; import {Panel, PanelHeader} from 'sentry/components/panels'; import teamSettingsFields from 'sentry/data/forms/teamSettingsFields'; import {IconDelete} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; import {Organization, Scope, Team} from 'sentry/types'; import withOrganization from 'sentry/utils/withOrganization'; import AsyncView from 'sentry/views/asyncView'; type Props = RouteComponentProps<{orgId: string; teamId: string}, {}> & { organization: Organization; team: Team; }; type State = AsyncView['state']; class TeamSettings extends AsyncView { getTitle() { return 'Team Settings'; } getEndpoints() { return []; } handleSubmitSuccess: FormProps['onSubmitSuccess'] = (resp, model, id) => { // Use the old slug when triggering the update so we correctly replace the // previous team in the store updateTeamSuccess(this.props.team.slug, resp); if (id === 'slug') { addSuccessMessage(t('Team name changed')); browserHistory.replace( `/settings/${this.props.params.orgId}/teams/${model.getValue(id)}/settings/` ); this.setState({loading: true}); } }; handleRemoveTeam = async () => { await removeTeam(this.api, this.props.params); browserHistory.replace(`/settings/${this.props.params.orgId}/teams/`); }; renderBody() { const {organization, team, params} = this.props; const access = new Set(organization.access); return (
addErrorMessage(t('Unable to save change'))} initialData={{ name: team.name, slug: team.slug, }} > {t('Remove Team')}
); } } export default withOrganization(TeamSettings);