Add selectDefaultTeam (#1613)

This commit is contained in:
Chris Duarte 2018-04-30 07:58:31 -07:00 committed by Elias Nahum
parent aebe22f58d
commit ad21a8cfb2
3 changed files with 24 additions and 16 deletions

View file

@ -20,10 +20,7 @@ export function handleTeamChange(teamId, selectChannel = true) {
return;
}
const actions = [
setChannelDisplayName(''),
{type: TeamTypes.SELECT_TEAM, data: teamId},
];
const actions = [setChannelDisplayName(''), {type: TeamTypes.SELECT_TEAM, data: teamId}];
if (selectChannel) {
actions.push({type: ChannelTypes.SELECT_CHANNEL, data: ''});
@ -39,14 +36,25 @@ export function handleTeamChange(teamId, selectChannel = true) {
};
}
export function selectFirstAvailableTeam() {
export function selectDefaultTeam() {
return async (dispatch, getState) => {
const {teams: allTeams, myMembers} = getState().entities.teams;
const teams = Object.keys(myMembers).map((key) => allTeams[key]);
const firstTeam = Object.values(teams).sort((a, b) => a.display_name.localeCompare(b.display_name))[0];
const state = getState();
if (firstTeam) {
handleTeamChange(firstTeam.id)(dispatch, getState);
const {ExperimentalPrimaryTeam} = state.entities.general.config;
const {teams: allTeams, myMembers} = state.entities.teams;
const teams = Object.keys(myMembers).map((key) => allTeams[key]);
let defaultTeam;
if (ExperimentalPrimaryTeam) {
defaultTeam = teams.find((t) => t.name === ExperimentalPrimaryTeam.toLowerCase());
}
if (!defaultTeam) {
defaultTeam = Object.values(teams).sort((a, b) => a.display_name.localeCompare(b.display_name))[0];
}
if (defaultTeam) {
handleTeamChange(defaultTeam.id)(dispatch, getState);
} else {
EventEmitter.emit(NavigationTypes.NAVIGATION_NO_TEAMS);
}
@ -55,5 +63,5 @@ export function selectFirstAvailableTeam() {
export default {
handleTeamChange,
selectFirstAvailableTeam,
selectDefaultTeam,
};

View file

@ -38,7 +38,7 @@ class Channel extends PureComponent {
connection: PropTypes.func.isRequired,
loadChannelsIfNecessary: PropTypes.func.isRequired,
loadProfilesAndTeamMembersForDMSidebar: PropTypes.func.isRequired,
selectFirstAvailableTeam: PropTypes.func.isRequired,
selectDefaultTeam: PropTypes.func.isRequired,
selectInitialChannel: PropTypes.func.isRequired,
initWebSocket: PropTypes.func.isRequired,
closeWebSocket: PropTypes.func.isRequired,
@ -62,7 +62,7 @@ class Channel extends PureComponent {
if (this.props.currentTeamId) {
this.loadChannels(this.props.currentTeamId);
} else {
this.props.actions.selectFirstAvailableTeam();
this.props.actions.selectDefaultTeam();
}
}
@ -190,7 +190,7 @@ class Channel extends PureComponent {
};
handleLeaveTeam = () => {
this.props.actions.selectFirstAvailableTeam();
this.props.actions.selectDefaultTeam();
};
loadChannels = (teamId) => {

View file

@ -17,7 +17,7 @@ import {
} from 'app/actions/views/channel';
import {connection} from 'app/actions/device';
import {recordLoadTime} from 'app/actions/views/root';
import {selectFirstAvailableTeam} from 'app/actions/views/select_team';
import {selectDefaultTeam} from 'app/actions/views/select_team';
import {getTheme} from 'mattermost-redux/selectors/entities/preferences';
import Channel from './channel';
@ -39,7 +39,7 @@ function mapDispatchToProps(dispatch) {
connection,
loadChannelsIfNecessary,
loadProfilesAndTeamMembersForDMSidebar,
selectFirstAvailableTeam,
selectDefaultTeam,
selectInitialChannel,
initWebSocket,
closeWebSocket,