From 4353e1fb978b70966800049cbf62088a53ab6df4 Mon Sep 17 00:00:00 2001 From: David Lu Date: Thu, 26 May 2016 05:36:51 -0700 Subject: PLT-2989 Incoming webhooks available to all channels user is member of (#3082) * Removed OPEN_CHANNEL check * Added checks for each type of channel * Added all channels display Used onComponentUpdate, made code clearer * Made requested changes --- webapp/components/channel_select.jsx | 51 +++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'webapp/components/channel_select.jsx') diff --git a/webapp/components/channel_select.jsx b/webapp/components/channel_select.jsx index 238cfa1ae..59bf2f15a 100644 --- a/webapp/components/channel_select.jsx +++ b/webapp/components/channel_select.jsx @@ -6,12 +6,24 @@ 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 * as AsyncClient from 'utils/async_client.jsx'; export default class ChannelSelect extends React.Component { static get propTypes() { return { onChange: React.PropTypes.func, - value: React.PropTypes.string + value: React.PropTypes.string, + selectOpen: React.PropTypes.bool.isRequired, + selectPrivate: React.PropTypes.bool.isRequired, + selectDm: React.PropTypes.bool.isRequired + }; + } + + static get defaultProps() { + return { + selectOpen: false, + selectPrivate: false, + selectDm: false }; } @@ -19,17 +31,16 @@ export default class ChannelSelect extends React.Component { super(props); this.handleChannelChange = this.handleChannelChange.bind(this); + this.compareByDisplayName = this.compareByDisplayName.bind(this); + + AsyncClient.getMoreChannels(true); this.state = { - channels: [] + channels: ChannelStore.getAll().sort(this.compareByDisplayName) }; } - componentWillMount() { - this.setState({ - channels: ChannelStore.getAll() - }); - + componentDidMount() { ChannelStore.addChangeListener(this.handleChannelChange); } @@ -39,10 +50,14 @@ export default class ChannelSelect extends React.Component { handleChannelChange() { this.setState({ - channels: ChannelStore.getAll() + channels: ChannelStore.getAll().concat(ChannelStore.getMoreAll()).sort(this.compareByDisplayName) }); } + compareByDisplayName(channelA, channelB) { + return channelA.display_name.localeCompare(channelB.display_name); + } + render() { const options = [ + ); + } else if (channel.type === Constants.PRIVATE_CHANNEL && this.props.selectPrivate) { + options.push( + + ); + } else if (channel.type === Constants.DM_CHANNEL && this.props.selectDm) { options.push(