From 9ba968ce3354b1a8ab307ecc4cc785bdee16f914 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 1 Feb 2017 08:57:16 +0900 Subject: Use consistent Display Name sorting code throughout the webapp #5159 (#5213) * Use consistent Display Name sorting code throughout the webapp #5159 * fixed broken sorting of teams and channels --- webapp/actions/global_actions.jsx | 2 +- .../admin_console/admin_navbar_dropdown.jsx | 5 ++-- webapp/components/admin_console/admin_sidebar.jsx | 17 ++---------- .../components/admin_console/select_team_modal.jsx | 14 +++------- webapp/components/channel_select.jsx | 10 +++----- .../suggestion/search_channel_provider.jsx | 9 ++++--- .../suggestion/switch_channel_provider.jsx | 17 +++--------- .../team_sidebar/team_sidebar_controller.jsx | 30 +++++++++++----------- webapp/stores/channel_store.jsx | 8 +++--- webapp/utils/channel_utils.jsx | 7 +++-- webapp/utils/utils.jsx | 22 +++++----------- 11 files changed, 51 insertions(+), 90 deletions(-) (limited to 'webapp') diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index beca75509..2d1638060 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -570,7 +570,7 @@ export function redirectUserToDefaultTeam() { } if (myTeams.length > 0) { - myTeams = myTeams.sort((a, b) => a.display_name.localeCompare(b.display_name)); + myTeams = myTeams.sort(Utils.sortTeamsByDisplayName); teamId = myTeams[0].id; } } diff --git a/webapp/components/admin_console/admin_navbar_dropdown.jsx b/webapp/components/admin_console/admin_navbar_dropdown.jsx index d4e144c4f..a1ec2885b 100644 --- a/webapp/components/admin_console/admin_navbar_dropdown.jsx +++ b/webapp/components/admin_console/admin_navbar_dropdown.jsx @@ -6,6 +6,7 @@ import ReactDOM from 'react-dom'; import TeamStore from 'stores/team_store.jsx'; import Constants from 'utils/constants.jsx'; +import {sortTeamsByDisplayName} from 'utils/utils.jsx'; import * as GlobalActions from 'actions/global_actions.jsx'; import {FormattedMessage} from 'react-intl'; @@ -64,9 +65,7 @@ export default class AdminNavbarDropdown extends React.Component { } // Sort teams alphabetically with display_name - teamsArray.sort((teamA, teamB) => - teamA.display_name.localeCompare(teamB.display_name) - ); + teamsArray = teamsArray.sort(sortTeamsByDisplayName); for (const team of teamsArray) { teams.push( diff --git a/webapp/components/admin_console/admin_sidebar.jsx b/webapp/components/admin_console/admin_sidebar.jsx index e8303ea0c..952fe9ff4 100644 --- a/webapp/components/admin_console/admin_sidebar.jsx +++ b/webapp/components/admin_console/admin_sidebar.jsx @@ -114,19 +114,6 @@ export default class AdminSidebar extends React.Component { document.title = Utils.localizeMessage('sidebar_right_menu.console', 'System Console') + ' - ' + currentSiteName; } - sortTeams(a, b) { - const teamA = a.display_name.toLowerCase(); - const teamB = b.display_name.toLowerCase(); - - if (teamA < teamB) { - return -1; - } - if (teamA > teamB) { - return 1; - } - return 0; - } - renderAddTeamButton() { const addTeamTooltip = ( @@ -159,7 +146,7 @@ export default class AdminSidebar extends React.Component { renderTeams() { const teams = []; - const teamsArray = []; + let teamsArray = []; Reflect.ownKeys(this.state.selectedTeams).forEach((key) => { if (this.state.teams[key]) { @@ -167,7 +154,7 @@ export default class AdminSidebar extends React.Component { } }); - teamsArray.sort(this.sortTeams); + teamsArray = teamsArray.sort(Utils.sortTeamsByDisplayName); for (let i = 0; i < teamsArray.length; i++) { const team = teamsArray[i]; diff --git a/webapp/components/admin_console/select_team_modal.jsx b/webapp/components/admin_console/select_team_modal.jsx index 14448d753..68e20f852 100644 --- a/webapp/components/admin_console/select_team_modal.jsx +++ b/webapp/components/admin_console/select_team_modal.jsx @@ -3,18 +3,17 @@ import ReactDOM from 'react-dom'; import {FormattedMessage} from 'react-intl'; - import {Modal} from 'react-bootstrap'; - import React from 'react'; +import {sortTeamsByDisplayName} from 'utils/utils.jsx'; + export default class SelectTeamModal extends React.Component { constructor(props) { super(props); this.doSubmit = this.doSubmit.bind(this); this.doCancel = this.doCancel.bind(this); - this.compare = this.compare.bind(this); } doSubmit(e) { @@ -25,24 +24,19 @@ export default class SelectTeamModal extends React.Component { this.props.onModalDismissed(); } - compare(a, b) { - return a.display_name.localeCompare(b.display_name); - } - render() { if (this.props.teams == null) { return
; } const options = []; - const teamsArray = []; + let teamsArray = []; Reflect.ownKeys(this.props.teams).forEach((key) => { teamsArray.push(this.props.teams[key]); }); - teamsArray.sort(this.compare); - + teamsArray = teamsArray.sort(sortTeamsByDisplayName); for (let i = 0; i < teamsArray.length; i++) { const team = teamsArray[i]; options.push( diff --git a/webapp/components/channel_select.jsx b/webapp/components/channel_select.jsx index 194de3874..ad0abd501 100644 --- a/webapp/components/channel_select.jsx +++ b/webapp/components/channel_select.jsx @@ -6,6 +6,7 @@ import React from 'react'; import Constants from 'utils/constants.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import * as Utils from 'utils/utils.jsx'; +import {sortChannelsByDisplayName} from 'utils/channel_utils.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; export default class ChannelSelect extends React.Component { @@ -32,12 +33,11 @@ export default class ChannelSelect extends React.Component { this.handleChannelChange = this.handleChannelChange.bind(this); this.filterChannels = this.filterChannels.bind(this); - this.compareByDisplayName = this.compareByDisplayName.bind(this); AsyncClient.getMoreChannels(true); this.state = { - channels: ChannelStore.getAll().filter(this.filterChannels).sort(this.compareByDisplayName) + channels: ChannelStore.getAll().filter(this.filterChannels).sort(sortChannelsByDisplayName) }; } @@ -52,7 +52,7 @@ export default class ChannelSelect extends React.Component { handleChannelChange() { this.setState({ channels: ChannelStore.getAll().concat(ChannelStore.getMoreAll()). - filter(this.filterChannels).sort(this.compareByDisplayName) + filter(this.filterChannels).sort(sortChannelsByDisplayName) }); } @@ -64,10 +64,6 @@ export default class ChannelSelect extends React.Component { return false; } - compareByDisplayName(channelA, channelB) { - return channelA.display_name.localeCompare(channelB.display_name); - } - render() { const options = [