Files
dispatch/client/src/js/command.js
2015-06-02 00:09:36 +02:00

114 lines
2.7 KiB
JavaScript

var _ = require('lodash');
var channelStore = require('./stores/channel');
var channelActions = require('./actions/channel');
var messageActions = require('./actions/message');
var serverActions = require('./actions/server');
var tabActions = require('./actions/tab');
messageActions.command.listen(function(line, channel, server) {
var params = line.slice(1).split(' ');
var command = params[0].toLowerCase();
switch (command) {
case 'nick':
if (params[1]) {
serverActions.setNick(params[1], server);
}
break;
case 'quit':
serverActions.disconnect(server);
break;
case 'join':
if (params[1]) {
channelActions.join([params[1]], server);
tabActions.select(server, params[1]);
}
break;
case 'part':
if (params[1]) {
channelActions.part([params[1]], server);
} else if (channel) {
channelActions.part([channel], server);
}
break;
case 'me':
if (params.length > 1) {
messageActions.send('\x01ACTION ' + params.slice(1).join(' ') + '\x01', channel, server);
}
break;
case 'topic':
let topic = channelStore.getTopic(server, channel);
if (topic) {
messageActions.add({
server: server,
to: channel,
message: topic
});
} else {
messageActions.inform('No topic set', server, channel);
}
break;
case 'invite':
if (params[1] && params[2] && server) {
channelActions.invite(params[1], params[2], server);
} else if (params[1] && channel) {
channelActions.invite(params[1], channel, server);
}
break;
case 'kick':
if (params[1] && channel) {
channelActions.kick(params[1], channel, server);
}
break;
case 'msg':
if (params.length > 2) {
let dest = params[1];
let message = params.slice(2).join(' ');
messageActions.send(message, dest, server);
}
break;
case 'say':
if (params.length > 1) {
let message = params.slice(1).join(' ');
messageActions.send(message, channel, server);
}
break;
case 'whois':
if (params[1]) {
serverActions.whois(params[1], server);
}
break;
case 'away':
serverActions.away(params[1], server);
break;
case 'help':
messageActions.inform([
_.escape('/join <channel> - Join a channel'),
'/part [channel] - Leave the current or entered channel',
_.escape('/nick <nick> - Change nick'),
'/quit - Disconnect from the current server',
_.escape('/me <message> - Send action message'),
'/topic - Show topic for the current channel',
_.escape('/msg <target> <message> - Send message to the entered channel or user'),
_.escape('/say <message> - Send message to the current chat'),
'/away [message] - Set or clear away message'
], server, channel);
break;
}
});