// 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 UserStore = require('../stores/user_store.jsx'); var ChannelStore = require('../stores/channel_store.jsx'); function getStateFromStores() { return { channels: ChannelStore.getMoreAll(), server_error: null }; } module.exports = React.createClass({ componentDidMount: function() { ChannelStore.addMoreChangeListener(this._onChange); $(this.refs.modal.getDOMNode()).on('shown.bs.modal', function (e) { asyncClient.getMoreChannels(true); }); var self = this; $(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) { var button = e.relatedTarget; self.setState({ channel_type: $(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.channel_type = ""; return initState; }, handleJoin: function(e) { var self = this; client.joinChannel(e, function(data) { $(self.refs.modal.getDOMNode()).modal('hide'); asyncClient.getChannels(true); }.bind(this), function(err) { this.state.server_error = err.message; this.setState(this.state); }.bind(this) ); }, handleNewChannel: function() { $(this.refs.modal.getDOMNode()).modal('hide'); }, render: function() { var server_error = this.state.server_error ?
: null; var outter = this; return ( ); } });