import PropTypes from 'prop-types';
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
import * as TeamActions from 'actions/team_actions.jsx';
import Client from 'client/web_client.jsx';
import LoadingScreen from 'components/loading_screen.jsx';
import {sortTeamsByDisplayName} from 'utils/team_utils.jsx';
import * as Utils from 'utils/utils.jsx';
import ManageTeamsDropdown from './manage_teams_dropdown.jsx';
import RemoveFromTeamButton from './remove_from_team_button.jsx';
export default class ManageTeamsModal extends React.Component {
static propTypes = {
onModalDismissed: PropTypes.func.isRequired,
show: PropTypes.bool.isRequired,
user: PropTypes.object
};
constructor(props) {
super(props);
this.loadTeamsAndTeamMembers = this.loadTeamsAndTeamMembers.bind(this);
this.handleError = this.handleError.bind(this);
this.handleMemberChange = this.handleMemberChange.bind(this);
this.handleMemberRemove = this.handleMemberRemove.bind(this);
this.renderContents = this.renderContents.bind(this);
this.state = {
error: null,
teams: null,
teamMembers: null
};
}
componentDidMount() {
if (this.props.user) {
this.loadTeamsAndTeamMembers();
}
}
componentWillReceiveProps(nextProps) {
const userId = this.props.user ? this.props.user.id : '';
const nextUserId = nextProps.user ? nextProps.user.id : '';
if (userId !== nextUserId) {
this.setState({
teams: null,
teamMembers: null
});
if (nextProps.user) {
this.loadTeamsAndTeamMembers(nextProps.user);
}
}
}
loadTeamsAndTeamMembers(user = this.props.user) {
TeamActions.getTeamsForUser(user.id, (teams) => {
this.setState({
teams: teams.sort(sortTeamsByDisplayName)
});
});
TeamActions.getTeamMembersForUser(user.id, (teamMembers) => {
this.setState({
teamMembers
});
});
}
handleError(error) {
this.setState({
error
});
}
handleMemberChange() {
TeamActions.getTeamMembersForUser(this.props.user.id, (teamMembers) => {
this.setState({
teamMembers
});
});
}
handleMemberRemove(teamId) {
this.setState({
teams: this.state.teams.filter((team) => team.id !== teamId),
teamMembers: this.state.teamMembers.filter((teamMember) => teamMember.team_id !== teamId)
});
}
renderContents() {
const {user} = this.props;
const {teams, teamMembers} = this.state;
if (!user) {
return