Moved websocket handling on the client into its own file, added reason to part and quit messages, global system messages about a user now only gets sent to channels where the user is/was
This commit is contained in:
parent
3f335187c0
commit
736ef76bc0
9 changed files with 108 additions and 100 deletions
|
@ -30,36 +30,4 @@ channelActions.part.preEmit = function(channels, server) {
|
|||
});
|
||||
};
|
||||
|
||||
socket.on('join', function(data) {
|
||||
channelActions.addUser(data.user, data.server, data.channels[0]);
|
||||
});
|
||||
|
||||
socket.on('part', function(data) {
|
||||
channelActions.removeUser(data.user, data.server, data.channels[0]);
|
||||
});
|
||||
|
||||
socket.on('quit', function(data) {
|
||||
channelActions.removeUserAll(data.user, data.server);
|
||||
});
|
||||
|
||||
socket.on('nick', function(data) {
|
||||
channelActions.renameUser(data.old, data.new, data.server);
|
||||
});
|
||||
|
||||
socket.on('users', function(data) {
|
||||
channelActions.setUsers(data.users, data.server, data.channel);
|
||||
});
|
||||
|
||||
socket.on('topic', function(data) {
|
||||
channelActions.setTopic(data.topic, data.server, data.channel);
|
||||
});
|
||||
|
||||
socket.on('mode', function(data) {
|
||||
channelActions.setMode(data);
|
||||
});
|
||||
|
||||
socket.on('channels', function(data) {
|
||||
channelActions.load(data);
|
||||
});
|
||||
|
||||
module.exports = channelActions;
|
|
@ -6,7 +6,8 @@ var socket = require('../socket');
|
|||
var messageActions = Reflux.createActions([
|
||||
'send',
|
||||
'add',
|
||||
'broadcast'
|
||||
'broadcast',
|
||||
'inform'
|
||||
]);
|
||||
|
||||
messageActions.send.preEmit = function(message, to, server) {
|
||||
|
@ -17,48 +18,4 @@ messageActions.send.preEmit = function(message, to, server) {
|
|||
});
|
||||
};
|
||||
|
||||
socket.on('message', function(data) {
|
||||
messageActions.add(data);
|
||||
});
|
||||
|
||||
socket.on('pm', function(data) {
|
||||
messageActions.add(data);
|
||||
});
|
||||
|
||||
socket.on('join', function(data) {
|
||||
messageActions.add({
|
||||
server: data.server,
|
||||
to: data.channels[0],
|
||||
message: data.user + ' joined the channel',
|
||||
type: 'info'
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('part', function(data) {
|
||||
messageActions.add({
|
||||
server: data.server,
|
||||
to: data.channels[0],
|
||||
message: data.user + ' left the channel',
|
||||
type: 'info'
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('quit', function(data) {
|
||||
messageActions.broadcast(data.user + ' quit', data.server);
|
||||
});
|
||||
|
||||
socket.on('nick', function(data) {
|
||||
messageActions.broadcast(data.old + ' changed nick to ' + data.new, data.server);
|
||||
});
|
||||
|
||||
socket.on('motd', function(data) {
|
||||
_.each(data.content.split('\n'), function(line) {
|
||||
messageActions.add({
|
||||
server: data.server,
|
||||
to: data.server,
|
||||
message: line
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = messageActions;
|
|
@ -21,8 +21,4 @@ serverActions.disconnect.preEmit = function(server) {
|
|||
socket.send('quit', { server: server });
|
||||
};
|
||||
|
||||
socket.on('servers', function(data) {
|
||||
serverActions.load(data);
|
||||
});
|
||||
|
||||
module.exports = serverActions;
|
|
@ -1,5 +1,6 @@
|
|||
var React = require('react');
|
||||
|
||||
require('./irc');
|
||||
var socket = require('./socket');
|
||||
var util = require('./util');
|
||||
var App = require('./components/App.jsx');
|
||||
|
|
68
client/src/js/irc.js
Normal file
68
client/src/js/irc.js
Normal file
|
@ -0,0 +1,68 @@
|
|||
var _ = require('lodash');
|
||||
|
||||
var socket = require('./socket');
|
||||
var channelActions = require('./actions/channel');
|
||||
var messageActions = require('./actions/message');
|
||||
var serverActions = require('./actions/server');
|
||||
|
||||
socket.on('join', function(data) {
|
||||
channelActions.addUser(data.user, data.server, data.channels[0]);
|
||||
messageActions.inform(data.user + ' joined the channel', data.server, data.channels[0]);
|
||||
});
|
||||
|
||||
socket.on('part', function(data) {
|
||||
channelActions.removeUser(data.user, data.server, data.channels[0]);
|
||||
messageActions.inform(withReason(data.user + ' left the channel', data.reason), data.server, data.channels[0]);
|
||||
});
|
||||
|
||||
socket.on('quit', function(data) {
|
||||
messageActions.broadcast(withReason(data.user + ' quit', data.reason), data.server, data.user);
|
||||
channelActions.removeUserAll(data.user, data.server);
|
||||
});
|
||||
|
||||
socket.on('nick', function(data) {
|
||||
messageActions.broadcast(data.old + ' changed nick to ' + data.new, data.server, data.old);
|
||||
channelActions.renameUser(data.old, data.new, data.server);
|
||||
});
|
||||
|
||||
socket.on('message', function(data) {
|
||||
messageActions.add(data);
|
||||
});
|
||||
|
||||
socket.on('pm', function(data) {
|
||||
messageActions.add(data);
|
||||
});
|
||||
|
||||
socket.on('motd', function(data) {
|
||||
_.each(data.content.split('\n'), function(line) {
|
||||
messageActions.add({
|
||||
server: data.server,
|
||||
to: data.server,
|
||||
message: line
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('users', function(data) {
|
||||
channelActions.setUsers(data.users, data.server, data.channel);
|
||||
});
|
||||
|
||||
socket.on('topic', function(data) {
|
||||
channelActions.setTopic(data.topic, data.server, data.channel);
|
||||
});
|
||||
|
||||
socket.on('mode', function(data) {
|
||||
channelActions.setMode(data);
|
||||
});
|
||||
|
||||
socket.on('servers', function(data) {
|
||||
serverActions.load(data);
|
||||
});
|
||||
|
||||
socket.on('channels', function(data) {
|
||||
channelActions.load(data);
|
||||
});
|
||||
|
||||
function withReason(message, reason) {
|
||||
return message + (reason ? ' (' + reason + ')' : '');
|
||||
}
|
|
@ -8,6 +8,8 @@ var actions = require('../actions/message');
|
|||
var messages = {};
|
||||
|
||||
function addMessage(message, dest) {
|
||||
message.time = new Date();
|
||||
|
||||
if (!(message.server in messages)) {
|
||||
messages[message.server] = {};
|
||||
messages[message.server][dest] = [message];
|
||||
|
@ -28,8 +30,7 @@ var messageStore = Reflux.createStore({
|
|||
server: server,
|
||||
from: serverStore.getNick(server),
|
||||
to: to,
|
||||
message: message,
|
||||
time: new Date()
|
||||
message: message
|
||||
}, to);
|
||||
|
||||
this.trigger(messages);
|
||||
|
@ -41,25 +42,34 @@ var messageStore = Reflux.createStore({
|
|||
dest = message.server;
|
||||
}
|
||||
|
||||
message.time = new Date();
|
||||
|
||||
addMessage(message, dest);
|
||||
this.trigger(messages);
|
||||
},
|
||||
|
||||
broadcast: function(message, server) {
|
||||
broadcast: function(message, server, user) {
|
||||
_.each(channelStore.getChannels(server), function(channel, channelName) {
|
||||
addMessage({
|
||||
server: server,
|
||||
to: channelName,
|
||||
message: message,
|
||||
type: 'info',
|
||||
time: new Date()
|
||||
}, channelName);
|
||||
if (!user || (user && _.find(channel.users, { nick: user }))) {
|
||||
addMessage({
|
||||
server: server,
|
||||
to: channelName,
|
||||
message: message,
|
||||
type: 'info'
|
||||
}, channelName);
|
||||
}
|
||||
});
|
||||
this.trigger(messages);
|
||||
},
|
||||
|
||||
inform: function(message, server, channel) {
|
||||
addMessage({
|
||||
server: server,
|
||||
to: channel,
|
||||
message: message,
|
||||
type: 'info'
|
||||
}, channel);
|
||||
this.trigger(messages);
|
||||
},
|
||||
|
||||
getState: function() {
|
||||
return messages;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue