Cleaned up action naming and handling
This commit is contained in:
parent
e1cb8c468d
commit
43a725c662
@ -1,47 +1,54 @@
|
|||||||
var Reflux = require('reflux');
|
var Reflux = require('reflux');
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
var sock = require('../socket.js')('/ws');
|
var socket = require('../socket.js');
|
||||||
|
|
||||||
var channelActions = Reflux.createActions([
|
var channelActions = Reflux.createActions([
|
||||||
'join',
|
'join',
|
||||||
'joined',
|
|
||||||
'part',
|
'part',
|
||||||
'parted',
|
'addUser',
|
||||||
'quit',
|
'removeUser',
|
||||||
|
'removeUserAll',
|
||||||
'setUsers',
|
'setUsers',
|
||||||
'setTopic',
|
'setTopic',
|
||||||
'load'
|
'load'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
channelActions.join.preEmit = function(data) {
|
channelActions.join.preEmit = function(channels, server) {
|
||||||
sock.send('join', data);
|
socket.send('join', {
|
||||||
|
server: server,
|
||||||
|
channels: channels
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
channelActions.part.preEmit = function(data) {
|
channelActions.part.preEmit = function(channels, server) {
|
||||||
sock.send('part', data);
|
socket.send('part', {
|
||||||
|
server: server,
|
||||||
|
channels: channels
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
sock.on('join', function(data) {
|
socket.on('join', function(data) {
|
||||||
channelActions.joined(data.user, data.server, data.channels[0]);
|
channelActions.addUser(data.user, data.server, data.channels[0]);
|
||||||
});
|
});
|
||||||
|
|
||||||
sock.on('part', function(data) {
|
socket.on('part', function(data) {
|
||||||
channelActions.parted(data.user, data.server, data.channels[0]);
|
channelActions.removeUser(data.user, data.server, data.channels[0]);
|
||||||
});
|
});
|
||||||
|
|
||||||
sock.on('quit', function(data) {
|
socket.on('quit', function(data) {
|
||||||
channelActions.quit(data.user, data.server);
|
channelActions.removeUserAll(data.user, data.server);
|
||||||
});
|
});
|
||||||
|
|
||||||
sock.on('users', function(data) {
|
socket.on('users', function(data) {
|
||||||
channelActions.setUsers(data.users, data.server, data.channel);
|
channelActions.setUsers(data.users, data.server, data.channel);
|
||||||
});
|
});
|
||||||
|
|
||||||
sock.on('topic', function(data) {
|
socket.on('topic', function(data) {
|
||||||
channelActions.setTopic(data.topic, data.server, data.channel);
|
channelActions.setTopic(data.topic, data.server, data.channel);
|
||||||
});
|
});
|
||||||
|
|
||||||
sock.on('channels', function(data) {
|
socket.on('channels', function(data) {
|
||||||
channelActions.load(data);
|
channelActions.load(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,19 +1,57 @@
|
|||||||
var Reflux = require('reflux');
|
var Reflux = require('reflux');
|
||||||
|
|
||||||
var sock = require('../socket.js')('/ws');
|
var socket = require('../socket.js');
|
||||||
|
|
||||||
var messageActions = Reflux.createActions([
|
var messageActions = Reflux.createActions([
|
||||||
'send',
|
'send',
|
||||||
'add',
|
'add'
|
||||||
'selectTab'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
messageActions.send.preEmit = function(message, to, server) {
|
messageActions.send.preEmit = function(message, to, server) {
|
||||||
sock.send('chat', {
|
socket.send('chat', {
|
||||||
server: server,
|
server: server,
|
||||||
to: to,
|
to: to,
|
||||||
message: message
|
message: message
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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,
|
||||||
|
from: '',
|
||||||
|
to: data.channels[0],
|
||||||
|
message: data.user + ' joined the channel',
|
||||||
|
type: 'info'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('part', function(data) {
|
||||||
|
messageActions.add({
|
||||||
|
server: data.server,
|
||||||
|
from: '',
|
||||||
|
to: data.channels[0],
|
||||||
|
message: data.user + ' left the channel',
|
||||||
|
type: 'info'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('motd', function(data) {
|
||||||
|
_.each(data.content.split('\n'), function(line) {
|
||||||
|
messageActions.add({
|
||||||
|
server: data.server,
|
||||||
|
from: '',
|
||||||
|
to: data.server,
|
||||||
|
message: line
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = messageActions;
|
module.exports = messageActions;
|
@ -1,14 +1,22 @@
|
|||||||
var Reflux = require('reflux');
|
var Reflux = require('reflux');
|
||||||
|
|
||||||
var sock = require('../socket.js')('/ws');
|
var socket = require('../socket.js')('/ws');
|
||||||
|
|
||||||
var serverActions = Reflux.createActions([
|
var serverActions = Reflux.createActions([
|
||||||
'connect',
|
'connect',
|
||||||
'disconnect'
|
'disconnect'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
serverActions.connect.preEmit = function(data) {
|
serverActions.connect.preEmit = function(server, nick, username) {
|
||||||
sock.send('connect', data);
|
socket.send('connect', {
|
||||||
|
server: server,
|
||||||
|
nick: nick,
|
||||||
|
username: username
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
serverActions.disconnect.preEmit = function(server) {
|
||||||
|
socket.send('quit', { server: server });
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = serverActions;
|
module.exports = serverActions;
|
@ -1,70 +1,21 @@
|
|||||||
var React = require('react');
|
var React = require('react');
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
var sock = require('./socket')('/ws');
|
var socket = require('./socket');
|
||||||
var util = require('./util');
|
var util = require('./util');
|
||||||
var App = require('./components/App.jsx');
|
var App = require('./components/App.jsx');
|
||||||
var messageActions = require('./actions/message.js');
|
|
||||||
var tabActions = require('./actions/tab.js');
|
var tabActions = require('./actions/tab.js');
|
||||||
var serverActions = require('./actions/server.js');
|
var serverActions = require('./actions/server.js');
|
||||||
var channelActions = require('./actions/channel.js');
|
var channelActions = require('./actions/channel.js');
|
||||||
|
|
||||||
React.render(<App />, document.body);
|
|
||||||
|
|
||||||
var uuid = localStorage.uuid || (localStorage.uuid = util.UUID());
|
var uuid = localStorage.uuid || (localStorage.uuid = util.UUID());
|
||||||
|
var nick = 'test' + Math.floor(Math.random() * 99999);
|
||||||
|
|
||||||
tabActions.select('irc.freenode.net');
|
socket.on('connect', function() {
|
||||||
|
socket.send('uuid', uuid);
|
||||||
|
|
||||||
sock.on('connect', function() {
|
serverActions.connect('irc.freenode.net', nick, 'username');
|
||||||
sock.send('uuid', uuid);
|
channelActions.join(['#stuff'], 'irc.freenode.net');
|
||||||
|
tabActions.select('irc.freenode.net');
|
||||||
serverActions.connect({
|
|
||||||
server: 'irc.freenode.net',
|
|
||||||
nick: 'test' + Math.floor(Math.random() * 99999),
|
|
||||||
username: 'user'
|
|
||||||
});
|
|
||||||
|
|
||||||
channelActions.join({
|
|
||||||
server: 'irc.freenode.net',
|
|
||||||
channels: [ '#stuff' ]
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
channelActions.joined.listen(function(user, server, channel) {
|
React.render(<App />, document.body);
|
||||||
messageActions.add({
|
|
||||||
server: server,
|
|
||||||
from: '',
|
|
||||||
to: channel,
|
|
||||||
message: user + ' joined the channel',
|
|
||||||
type: 'info'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
channelActions.parted.listen(function(user, server, channel) {
|
|
||||||
messageActions.add({
|
|
||||||
server: server,
|
|
||||||
from: '',
|
|
||||||
to: channel,
|
|
||||||
message: user + ' left the channel',
|
|
||||||
type: 'info'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
sock.on('message', function(data) {
|
|
||||||
messageActions.add(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
sock.on('pm', function(data) {
|
|
||||||
messageActions.add(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
sock.on('motd', function(data) {
|
|
||||||
_.each(data.content.split('\n'), function(line) {
|
|
||||||
messageActions.add({
|
|
||||||
server: data.server,
|
|
||||||
from: '',
|
|
||||||
to: data.server,
|
|
||||||
message: line
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
@ -11,19 +11,13 @@ function dispatchCommand(cmd, channel, server) {
|
|||||||
switch (params[0].toLowerCase()) {
|
switch (params[0].toLowerCase()) {
|
||||||
case 'join':
|
case 'join':
|
||||||
if (params[1]) {
|
if (params[1]) {
|
||||||
channelActions.join({
|
channelActions.join(params[1], server);
|
||||||
server: server,
|
|
||||||
channels: [params[1]]
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'part':
|
case 'part':
|
||||||
if (channel) {
|
if (channel) {
|
||||||
channelActions.part({
|
channelActions.part([channel], server);
|
||||||
server: server,
|
|
||||||
channels: [channel]
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2,40 +2,28 @@ var EventEmitter = require('events').EventEmitter;
|
|||||||
|
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
|
|
||||||
var sockets = {};
|
var socket = {
|
||||||
|
send: function(type, data) {
|
||||||
function createSocket(path) {
|
ws.send(JSON.stringify({ type: type, request: data }));
|
||||||
if (sockets[path]) {
|
|
||||||
return sockets[path];
|
|
||||||
} else {
|
|
||||||
var ws = new WebSocket('ws://' + window.location.host + path);
|
|
||||||
|
|
||||||
var sock = {
|
|
||||||
send: function(type, data) {
|
|
||||||
ws.send(JSON.stringify({ type: type, request: data }));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
_.extend(sock, EventEmitter.prototype);
|
|
||||||
|
|
||||||
sockets[path] = sock;
|
|
||||||
|
|
||||||
ws.onopen = function() {
|
|
||||||
sock.emit('connect');
|
|
||||||
};
|
|
||||||
|
|
||||||
ws.onclose = function() {
|
|
||||||
sock.emit('disconnect');
|
|
||||||
};
|
|
||||||
|
|
||||||
ws.onmessage = function(e) {
|
|
||||||
var msg = JSON.parse(e.data);
|
|
||||||
|
|
||||||
sock.emit(msg.type, msg.response);
|
|
||||||
};
|
|
||||||
|
|
||||||
return sock;
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
module.exports = createSocket;
|
_.extend(socket, EventEmitter.prototype);
|
||||||
|
|
||||||
|
var ws = new WebSocket('ws://' + window.location.host + '/ws');
|
||||||
|
|
||||||
|
ws.onopen = function() {
|
||||||
|
socket.emit('connect');
|
||||||
|
};
|
||||||
|
|
||||||
|
ws.onclose = function() {
|
||||||
|
socket.emit('disconnect');
|
||||||
|
};
|
||||||
|
|
||||||
|
ws.onmessage = function(e) {
|
||||||
|
var msg = JSON.parse(e.data);
|
||||||
|
|
||||||
|
socket.emit(msg.type, msg.response);
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = socket;
|
@ -19,25 +19,25 @@ var channelStore = Reflux.createStore({
|
|||||||
this.listenToMany(actions);
|
this.listenToMany(actions);
|
||||||
},
|
},
|
||||||
|
|
||||||
joined: function(user, server, channel) {
|
part: function(partChannels, server) {
|
||||||
|
_.each(partChannels, function(channel) {
|
||||||
|
delete channels[server][channel];
|
||||||
|
});
|
||||||
|
this.trigger(channels);
|
||||||
|
},
|
||||||
|
|
||||||
|
addUser: function(user, server, channel) {
|
||||||
initChannel(server, channel);
|
initChannel(server, channel);
|
||||||
channels[server][channel].users.push(user);
|
channels[server][channel].users.push(user);
|
||||||
this.trigger(channels);
|
this.trigger(channels);
|
||||||
},
|
},
|
||||||
|
|
||||||
part: function(data) {
|
removeUser: function(user, server, channel) {
|
||||||
_.each(data.channels, function(channel) {
|
|
||||||
delete channels[data.server][channel];
|
|
||||||
});
|
|
||||||
this.trigger(channels);
|
|
||||||
},
|
|
||||||
|
|
||||||
parted: function(user, server, channel) {
|
|
||||||
_.pull(channels[server][channel].users, user);
|
_.pull(channels[server][channel].users, user);
|
||||||
this.trigger(channels);
|
this.trigger(channels);
|
||||||
},
|
},
|
||||||
|
|
||||||
quit: function(user, server) {
|
removeUserAll: function(user, server) {
|
||||||
_.each(channels[server], function(channel) {
|
_.each(channels[server], function(channel) {
|
||||||
_.pull(channel.users, user);
|
_.pull(channel.users, user);
|
||||||
});
|
});
|
||||||
|
@ -18,10 +18,10 @@ var selectedTabStore = Reflux.createStore({
|
|||||||
this.trigger(selectedTab);
|
this.trigger(selectedTab);
|
||||||
},
|
},
|
||||||
|
|
||||||
part: function(data) {
|
part: function(channels, server) {
|
||||||
var self = this;
|
var self = this;
|
||||||
if (data.server === selectedTab.server) {
|
if (server === selectedTab.server) {
|
||||||
_.each(data.channels, function(channel) {
|
_.each(channels, function(channel) {
|
||||||
if (channel === selectedTab.channel) {
|
if (channel === selectedTab.channel) {
|
||||||
delete selectedTab.channel;
|
delete selectedTab.channel;
|
||||||
self.trigger(selectedTab);
|
self.trigger(selectedTab);
|
||||||
|
@ -9,8 +9,12 @@ var serverStore = Reflux.createStore({
|
|||||||
this.listenToMany(actions);
|
this.listenToMany(actions);
|
||||||
},
|
},
|
||||||
|
|
||||||
connect: function(data) {
|
connect: function(server, nick, username) {
|
||||||
servers[data.server] = data;
|
servers[server] = {
|
||||||
|
server: server,
|
||||||
|
nick: nick,
|
||||||
|
username: username
|
||||||
|
};
|
||||||
this.trigger(servers);
|
this.trigger(servers);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user