// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var utils = require('../utils/utils.jsx'); var client = require('../utils/client.jsx'); var asyncClient = require('../utils/async_client.jsx'); var ChannelStore = require('../stores/channel_store.jsx'); var LoadingScreen = require('./loading_screen.jsx'); function getStateFromStores() { return { channels: ChannelStore.getMoreAll(), serverError: null }; } module.exports = React.createClass({ displayName: 'MoreChannelsModal', componentDidMount: function() { ChannelStore.addMoreChangeListener(this._onChange); $(this.refs.modal.getDOMNode()).on('shown.bs.modal', function shown() { asyncClient.getMoreChannels(true); }); var self = this; $(this.refs.modal.getDOMNode()).on('show.bs.modal', function show(e) { var button = e.relatedTarget; self.setState({channelType: $(button).attr('data-channeltype')}); }); }, componentWillUnmount: function() { ChannelStore.removeMoreChangeListener(this._onChange); }, _onChange: function() { var newState = getStateFromStores(); if (!utils.areStatesEqual(newState.channels, this.state.channels)) { this.setState(newState); } }, getInitialState: function() { var initState = getStateFromStores(); initState.channelType = ''; return initState; }, handleJoin: function(id) { client.joinChannel(id, function() { $(this.refs.modal.getDOMNode()).modal('hide'); asyncClient.getChannel(id); }.bind(this), function(err) { this.state.serverError = err.message; this.setState(this.state); }.bind(this) ); }, handleNewChannel: function() { $(this.refs.modal.getDOMNode()).modal('hide'); }, render: function() { var serverError; if (this.state.serverError) { serverError =
; } var outter = this; var moreChannels; if (this.state.channels != null) { var channels = this.state.channels; if (!channels.loading) { if (channels.length) { moreChannels = ( {channels.map(function cMap(channel) { return ( ); })}

{channel.display_name}

{channel.description}

); } else { moreChannels = (

No more channels to join

Click 'Create New Channel' to make a new one

); } } else { moreChannels = ; } } return ( ); } });