diff options
author | Joram Wilander <jwawilander@gmail.com> | 2015-11-04 07:51:49 -0500 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2015-11-04 07:51:49 -0500 |
commit | d9c7fce07744f38715e96f34bf7eaf75d1bcfb00 (patch) | |
tree | 9a5edea63395549b8aedd9a9ba5985ef0fb695df | |
parent | 0cc985f6f4c439eb9a951d007628849d15a16087 (diff) | |
parent | 9cc000f6e23d75e826c4468dd5c3977397e58e57 (diff) | |
download | chat-d9c7fce07744f38715e96f34bf7eaf75d1bcfb00.tar.gz chat-d9c7fce07744f38715e96f34bf7eaf75d1bcfb00.tar.bz2 chat-d9c7fce07744f38715e96f34bf7eaf75d1bcfb00.zip |
Merge pull request #1279 from rgarmsen2295/plt-743
PLT-741/743 Adds additional checks when sorting channels/teams by display name
-rw-r--r-- | web/react/components/navbar_dropdown.jsx | 18 | ||||
-rw-r--r-- | web/react/stores/channel_store.jsx | 14 | ||||
-rw-r--r-- | web/react/utils/utils.jsx | 21 |
3 files changed, 31 insertions, 22 deletions
diff --git a/web/react/components/navbar_dropdown.jsx b/web/react/components/navbar_dropdown.jsx index f43bdffdf..029b9c137 100644 --- a/web/react/components/navbar_dropdown.jsx +++ b/web/react/components/navbar_dropdown.jsx @@ -11,23 +11,15 @@ var AboutBuildModal = require('./about_build_modal.jsx'); var Constants = require('../utils/constants.jsx'); function getStateFromStores() { - let teams = []; - let teamsObject = UserStore.getTeams(); - for (let teamId in teamsObject) { + const teams = []; + const teamsObject = UserStore.getTeams(); + for (const teamId in teamsObject) { if (teamsObject.hasOwnProperty(teamId)) { teams.push(teamsObject[teamId]); } } - teams.sort(function sortByDisplayName(teamA, teamB) { - let teamADisplayName = teamA.display_name.toLowerCase(); - let teamBDisplayName = teamB.display_name.toLowerCase(); - if (teamADisplayName < teamBDisplayName) { - return -1; - } else if (teamADisplayName > teamBDisplayName) { - return 1; - } - return 0; - }); + + teams.sort(Utils.sortByDisplayName); return {teams}; } diff --git a/web/react/stores/channel_store.jsx b/web/react/stores/channel_store.jsx index d1f548d50..cc0d0d14b 100644 --- a/web/react/stores/channel_store.jsx +++ b/web/react/stores/channel_store.jsx @@ -4,6 +4,7 @@ var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); var EventEmitter = require('events').EventEmitter; +var Utils; var Constants = require('../utils/constants.jsx'); var ActionTypes = Constants.ActionTypes; @@ -183,16 +184,11 @@ class ChannelStoreClass extends EventEmitter { channels.push(channel); } - channels.sort(function chanSort(a, b) { - if (a.display_name.toLowerCase() < b.display_name.toLowerCase()) { - return -1; - } - if (a.display_name.toLowerCase() > b.display_name.toLowerCase()) { - return 1; - } - return 0; - }); + if (!Utils) { + Utils = require('../utils/utils.jsx'); //eslint-disable-line global-require + } + channels.sort(Utils.sortByDisplayName); this.pStoreChannels(channels); } pStoreChannels(channels) { diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index c82bd1065..e8d34dccd 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -1104,3 +1104,24 @@ export function openDirectChannelToUser(user, successCb, errorCb) { ); } } + +// Use when sorting multiple channels or teams by their `display_name` field +export function sortByDisplayName(a, b) { + let aDisplayName = ''; + let bDisplayName = ''; + + if (a && a.display_name) { + aDisplayName = a.display_name.toLowerCase(); + } + if (b && b.display_name) { + bDisplayName = b.display_name.toLowerCase(); + } + + if (aDisplayName < bDisplayName) { + return -1; + } + if (aDisplayName > bDisplayName) { + return 1; + } + return 0; +} |