Added IRC network naming, added some convenience getters to the stores

This commit is contained in:
khlieng 2015-02-02 01:54:26 +01:00
parent 1c30da5474
commit eec82a7dd9
14 changed files with 73 additions and 33 deletions

View file

@ -19,25 +19,21 @@ var ChatTitle = React.createClass({
render: function() {
var tab = this.state.selectedTab;
var title;
var topic;
var usercount;
if (tab.channel && this.state.channels[tab.server]) {
var channel = this.state.channels[tab.server][tab.channel];
title = tab.channel
if (channel) {
usercount = channel.users.length;
topic = channel.topic || '';
}
} else {
title = tab.server;
}
return (
<div className="chat-title-bar">
<div>
<span className="chat-title">{title}</span>
<span className="chat-title">{tab.name}</span>
<span className="chat-topic" title={topic}>{topic}</span>
</div>
<span className="chat-usercount">{usercount}</span>

View file

@ -4,6 +4,7 @@ var _ = require('lodash');
var channelStore = require('../stores/channel');
var privateChatStore = require('../stores/privateChat');
var serverStore = require('../stores/server');
var selectedTabStore = require('../stores/selectedTab');
var tabActions = require('../actions/tab');
@ -11,14 +12,16 @@ var TabList = React.createClass({
mixins: [
Reflux.connect(channelStore, 'channels'),
Reflux.connect(privateChatStore, 'privateChats'),
Reflux.connect(selectedTabStore, 'selectedTab')
Reflux.connect(selectedTabStore, 'selectedTab'),
Reflux.connect(serverStore, 'servers')
],
getInitialState: function() {
return {
channels: channelStore.getState(),
privateChats: privateChatStore.getState(),
selectedTab: selectedTabStore.getState()
selectedTab: selectedTabStore.getState(),
servers: serverStore.getState()
};
},
@ -36,7 +39,13 @@ var TabList = React.createClass({
tabClass = '';
}
return <p className={tabClass} onClick={tabActions.select.bind(null, address, name)}>{name}</p>;
return (
<p
className={tabClass}
onClick={tabActions.select.bind(null, address, name)}>
{name}
</p>
);
});
_.each(self.state.privateChats[address], function(chat, nick) {
@ -46,8 +55,14 @@ var TabList = React.createClass({
} else {
tabClass = '';
}
channels.push(<p className={tabClass} onClick={tabActions.select.bind(null, address, nick)}>{nick}</p>);
channels.push(
<p
className={tabClass}
onClick={tabActions.select.bind(null, address, nick)}>
{nick}
</p>
);
});
if (address === selected.server &&
@ -57,7 +72,13 @@ var TabList = React.createClass({
tabClass = 'tab-server';
}
channels.unshift(<p className={tabClass} onClick={tabActions.select.bind(null, address, null)}>{address}</p>);
channels.unshift(
<p
className={tabClass}
onClick={tabActions.select.bind(null, address, null)}>
{serverStore.getName(address)}
</p>
);
return channels;
});

View file

@ -22,20 +22,14 @@ var UserList = React.createClass({
render: function() {
var users = null;
var tab = this.state.selectedTab;
var style = {};
if (!tab.channel || tab.channel[0] !== '#') {
style.display = 'none';
}
if (tab.channel && this.state.channels[tab.server]) {
var channel = this.state.channels[tab.server][tab.channel];
if (channel) {
users = _.map(channel.users, function(user) {
return <UserListItem user={user} />;
});
}
} else {
users = _.map(channelStore.getUsers(tab.server, tab.channel), function(user) {
return <UserListItem key={user.nick} user={user} />;
});
}
return (