Added private messaging to the client

This commit is contained in:
khlieng 2015-01-30 02:34:28 +01:00
parent e715b1c2c0
commit c421dc504b
8 changed files with 117 additions and 6 deletions

View file

@ -25,8 +25,8 @@ var ChatTitle = React.createClass({
if (tab.channel && this.state.channels[tab.server]) {
var channel = this.state.channels[tab.server][tab.channel];
title = tab.channel
if (channel) {
title = tab.channel
usercount = channel.users.length;
topic = channel.topic || '';
}

View file

@ -3,18 +3,21 @@ var Reflux = require('reflux');
var _ = require('lodash');
var channelStore = require('../stores/channel');
var privateChatStore = require('../stores/privateChat');
var selectedTabStore = require('../stores/selectedTab');
var tabActions = require('../actions/tab');
var TabList = React.createClass({
mixins: [
Reflux.connect(channelStore, 'channels'),
Reflux.connect(privateChatStore, 'privateChats'),
Reflux.connect(selectedTabStore, 'selectedTab')
],
getInitialState: function() {
return {
channels: channelStore.getState(),
privateChats: privateChatStore.getState(),
selectedTab: selectedTabStore.getState()
};
},
@ -36,6 +39,17 @@ var TabList = React.createClass({
return <p className={tabClass} onClick={tabActions.select.bind(null, address, name)}>{name}</p>;
});
_.each(self.state.privateChats[address], function(chat, nick) {
if (address === selected.server &&
nick === selected.channel) {
tabClass = 'selected';
} else {
tabClass = '';
}
channels.push(<p className={tabClass} onClick={tabActions.select.bind(null, address, nick)}>{nick}</p>);
});
if (address === selected.server &&
selected.channel === null) {
tabClass = 'tab-server selected';

View file

@ -2,6 +2,7 @@ var React = require('react');
var Reflux = require('reflux');
var _ = require('lodash');
var UserListItem = require('../components/UserListItem.jsx');
var channelStore = require('../stores/channel');
var selectedTabStore = require('../stores/selectedTab');
@ -26,7 +27,7 @@ var UserList = React.createClass({
var channel = this.state.channels[tab.server][tab.channel];
if (channel) {
users = _.map(channel.users, function(user) {
return <p>{user.renderName}</p>;
return <UserListItem user={user} />;
});
}
}

View file

@ -0,0 +1,20 @@
var React = require('react');
var selectedTabStore = require('../stores/selectedTab');
var privateChatActions = require('../actions/privateChat');
var tabActions = require('../actions/tab');
var UserListItem = React.createClass({
handleClick: function() {
var server = selectedTabStore.getServer();
privateChatActions.open(server, this.props.user.nick);
tabActions.select(server, this.props.user.nick);
},
render: function() {
return <p onClick={this.handleClick}>{this.props.user.renderName}</p>;
}
});
module.exports = UserListItem;