// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import $ from 'jquery';
import ReactDOM from 'react-dom';
import * as Utils from 'utils/utils.jsx';
import * as client from 'utils/client.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
import ChannelStore from 'stores/channel_store.jsx';
import LoadingScreen from './loading_screen.jsx';
import NewChannelFlow from './new_channel_flow.jsx';
import {FormattedMessage} from 'react-intl';
import loadingGif from 'images/load.gif';
function getStateFromStores() {
return {
channels: ChannelStore.getMoreAll(),
serverError: null
};
}
import React from 'react';
export default class MoreChannels extends React.Component {
constructor(props) {
super(props);
this.onListenerChange = this.onListenerChange.bind(this);
this.handleJoin = this.handleJoin.bind(this);
this.handleNewChannel = this.handleNewChannel.bind(this);
this.createChannelRow = this.createChannelRow.bind(this);
var initState = getStateFromStores();
initState.channelType = '';
initState.joiningChannel = -1;
initState.showNewChannelModal = false;
this.state = initState;
}
componentDidMount() {
ChannelStore.addMoreChangeListener(this.onListenerChange);
$(ReactDOM.findDOMNode(this.refs.modal)).on('shown.bs.modal', () => {
AsyncClient.getMoreChannels(true);
});
var self = this;
$(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', (e) => {
var button = e.relatedTarget;
self.setState({channelType: $(button).attr('data-channeltype')});
});
}
componentWillUnmount() {
ChannelStore.removeMoreChangeListener(this.onListenerChange);
}
onListenerChange() {
var newState = getStateFromStores();
if (!Utils.areObjectsEqual(newState.channels, this.state.channels)) {
this.setState(newState);
}
}
handleJoin(channel, channelIndex) {
this.setState({joiningChannel: channelIndex});
client.joinChannel(channel.id,
() => {
$(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
AsyncClient.getChannel(channel.id);
Utils.switchChannel(channel);
this.setState({joiningChannel: -1});
},
(err) => {
this.setState({joiningChannel: -1, serverError: err.message});
}
);
}
handleNewChannel() {
$(ReactDOM.findDOMNode(this.refs.modal)).modal('hide');
this.setState({showNewChannelModal: true});
}
createChannelRow(channel, index) {
let joinButton;
if (this.state.joiningChannel === index) {
joinButton = (
);
} else {
joinButton = (
);
}
return (
{channel.display_name}
{channel.purpose}