diff --git a/app/screens/select_team/index.js b/app/screens/select_team/index.js index d49e5a983..18be33841 100644 --- a/app/screens/select_team/index.js +++ b/app/screens/select_team/index.js @@ -27,6 +27,7 @@ function mapStateToProps(state, ownProps) { teamsRequest: state.requests.teams.getMyTeams, teams: Object.values(getJoinableTeams(state)).sort(sortTeams), currentChannelId: getCurrentChannelId(state), + joinTeamRequest: state.requests.teams.joinTeam, ...ownProps }; } diff --git a/app/screens/select_team/select_team.js b/app/screens/select_team/select_team.js index 04f3a8b91..98b9a8e29 100644 --- a/app/screens/select_team/select_team.js +++ b/app/screens/select_team/select_team.js @@ -4,6 +4,7 @@ import React, {PureComponent} from 'react'; import PropTypes from 'prop-types'; import { + Alert, FlatList, InteractionManager, StyleSheet, @@ -12,11 +13,13 @@ import { View } from 'react-native'; +import {RequestStatus} from 'mattermost-redux/constants'; import EventEmitter from 'mattermost-redux/utils/event_emitter'; import FormattedText from 'app/components/formatted_text'; import Loading from 'app/components/loading'; import StatusBar from 'app/components/status_bar'; + import {preventDoubleTap} from 'app/utils/tap'; import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme'; @@ -31,6 +34,7 @@ export default class SelectTeam extends PureComponent { }).isRequired, currentChannelId: PropTypes.string, currentUrl: PropTypes.string.isRequired, + joinTeamRequest: PropTypes.object.isRequired, navigator: PropTypes.object, userWithoutTeams: PropTypes.bool, teams: PropTypes.array.isRequired, @@ -55,6 +59,11 @@ export default class SelectTeam extends PureComponent { if (this.props.teams !== nextProps.teams) { this.buildData(nextProps); } + + if (this.props.joinTeamRequest.status !== RequestStatus.FAILURE && + nextProps.joinTeamRequest.status === RequestStatus.FAILURE) { + Alert.alert('', nextProps.joinTeamRequest.error.message); + } } buildData = (props) => { @@ -118,7 +127,13 @@ export default class SelectTeam extends PureComponent { if (currentChannelId) { markChannelAsRead(currentChannelId); } - await joinTeam(team.invite_id, team.id); + + const success = await joinTeam(team.invite_id, team.id); + if (!success) { + this.setState({joining: false}); + return; + } + handleTeamChange(team); if (userWithoutTeams) {