diff --git a/app/components/channel_drawer/teams_list/index.js b/app/components/channel_drawer/teams_list/index.js index 018f55f16..b3fafaecf 100644 --- a/app/components/channel_drawer/teams_list/index.js +++ b/app/components/channel_drawer/teams_list/index.js @@ -5,32 +5,22 @@ import {bindActionCreators} from 'redux'; import {connect} from 'react-redux'; import {getCurrentUrl} from 'mattermost-redux/selectors/entities/general'; -import {getCurrentTeamId, getJoinableTeams, getMyTeams, getTeamMemberships} from 'mattermost-redux/selectors/entities/teams'; -import {getCurrentUser} from 'mattermost-redux/selectors/entities/users'; +import {getCurrentTeamId, getJoinableTeams, getTeamMemberships} from 'mattermost-redux/selectors/entities/teams'; import {handleTeamChange} from 'app/actions/views/select_team'; import {getTheme} from 'app/selectors/preferences'; +import {getMySortedTeams} from 'app/selectors/teams'; import {removeProtocol} from 'app/utils/url'; import TeamsList from './teams_list'; function mapStateToProps(state, ownProps) { - const user = getCurrentUser(state); - - function sortTeams(locale, a, b) { - if (a.display_name !== b.display_name) { - return a.display_name.toLowerCase().localeCompare(b.display_name.toLowerCase(), locale, {numeric: true}); - } - - return a.name.toLowerCase().localeCompare(b.name.toLowerCase(), locale, {numeric: true}); - } - return { canCreateTeams: false, joinableTeams: getJoinableTeams(state), currentTeamId: getCurrentTeamId(state), currentUrl: removeProtocol(getCurrentUrl(state)), - teams: getMyTeams(state).sort(sortTeams.bind(null, (user.locale))), + teams: getMySortedTeams(state), theme: getTheme(state), myTeamMembers: getTeamMemberships(state), ...ownProps diff --git a/app/selectors/teams.js b/app/selectors/teams.js new file mode 100644 index 000000000..a10d78d43 --- /dev/null +++ b/app/selectors/teams.js @@ -0,0 +1,23 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {createSelector} from 'reselect'; + +import {getMyTeams} from 'mattermost-redux/selectors/entities/teams'; +import {getCurrentUser} from 'mattermost-redux/selectors/entities/users'; + +export const getMySortedTeams = createSelector( + getMyTeams, + getCurrentUser, + (teams, currentUser) => { + const locale = currentUser.locale; + + return teams.sort((a, b) => { + if (a.display_name !== b.display_name) { + return a.display_name.toLowerCase().localeCompare(b.display_name.toLowerCase(), locale, {numeric: true}); + } + + return a.name.toLowerCase().localeCompare(b.name.toLowerCase(), locale, {numeric: true}); + }); + } +);