diff --git a/app/actions/views/select_team.js b/app/actions/views/select_team.js index 8e04e1783..851c5f567 100644 --- a/app/actions/views/select_team.js +++ b/app/actions/views/select_team.js @@ -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, }; diff --git a/app/screens/channel/channel.js b/app/screens/channel/channel.js index 1a7b7329c..41cc6138e 100644 --- a/app/screens/channel/channel.js +++ b/app/screens/channel/channel.js @@ -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) => { diff --git a/app/screens/channel/index.js b/app/screens/channel/index.js index 5241fdc07..50ce74bcd 100644 --- a/app/screens/channel/index.js +++ b/app/screens/channel/index.js @@ -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,