Switch to redux and webpack
This commit is contained in:
parent
b247287075
commit
e389454535
97 changed files with 2722 additions and 2656 deletions
108
client/src/js/commands.js
Normal file
108
client/src/js/commands.js
Normal file
|
@ -0,0 +1,108 @@
|
|||
import _ from 'lodash';
|
||||
import createCommandMiddleware from './middleware/command';
|
||||
import { COMMAND } from './actions';
|
||||
import { setNick, disconnect, whois, away } from './actions/server';
|
||||
import { join, part, invite, kick } from './actions/channel';
|
||||
import { select } from './actions/tab';
|
||||
import { sendMessage, addMessage, inform } from './actions/message';
|
||||
|
||||
const help = [
|
||||
'/join <channel> - Join a channel',
|
||||
'/part [channel] - Leave the current or specified channel',
|
||||
'/nick <nick> - Change nick',
|
||||
'/quit - Disconnect from the current server',
|
||||
'/me <message> - Send action message',
|
||||
'/topic - Show topic for the current channel',
|
||||
'/msg <target> <message> - Send message to the specified channel or user',
|
||||
'/say <message> - Send message to the current chat',
|
||||
'/invite <user> [channel] - Invite user to the current or specified channel',
|
||||
'/kick <user> - Kick user from the current channel',
|
||||
'/whois <user> - Get information about user',
|
||||
'/away [message] - Set or clear away message'
|
||||
].map(_.escape);
|
||||
|
||||
export default createCommandMiddleware(COMMAND, {
|
||||
join({ dispatch, server }, channel) {
|
||||
if (channel) {
|
||||
dispatch(join([channel], server));
|
||||
dispatch(select(server, channel));
|
||||
}
|
||||
},
|
||||
|
||||
part({ dispatch, server, channel }, partChannel) {
|
||||
if (partChannel) {
|
||||
dispatch(part([partChannel], server));
|
||||
} else {
|
||||
dispatch(part([channel], server));
|
||||
}
|
||||
},
|
||||
|
||||
nick({ dispatch, server }, nick) {
|
||||
if (nick) {
|
||||
dispatch(setNick(nick, server));
|
||||
}
|
||||
},
|
||||
|
||||
quit({ dispatch, server }) {
|
||||
dispatch(disconnect(server));
|
||||
},
|
||||
|
||||
me({ dispatch, server, channel }, ...params) {
|
||||
if (params.length > 0) {
|
||||
dispatch(sendMessage(`\x01ACTION ${params.join(' ')}\x01`, channel, server));
|
||||
}
|
||||
},
|
||||
|
||||
topic({ dispatch, getState, server, channel }) {
|
||||
const topic = getState().channels.getIn([server, channel, 'topic']);
|
||||
if (topic) {
|
||||
dispatch(addMessage({
|
||||
server,
|
||||
to: channel,
|
||||
message: topic
|
||||
}));
|
||||
} else {
|
||||
dispatch(inform('No topic set', server, channel));
|
||||
}
|
||||
},
|
||||
|
||||
msg({ dispatch, server }, target, ...message) {
|
||||
if (target && message) {
|
||||
dispatch(sendMessage(message.join(' '), target, server));
|
||||
}
|
||||
},
|
||||
|
||||
say({ dispatch, server, channel }, ...message) {
|
||||
if (channel && message) {
|
||||
dispatch(sendMessage(message.join(' '), channel, server));
|
||||
}
|
||||
},
|
||||
|
||||
invite({ dispatch, server, channel }, user, inviteChannel) {
|
||||
if (user && inviteChannel) {
|
||||
dispatch(invite(user, inviteChannel, server));
|
||||
} else if (user && channel) {
|
||||
dispatch(invite(user, channel, server));
|
||||
}
|
||||
},
|
||||
|
||||
kick({ dispatch, server, channel }, user) {
|
||||
if (user && channel) {
|
||||
dispatch(kick(user, channel, server));
|
||||
}
|
||||
},
|
||||
|
||||
whois({ dispatch, server }, user) {
|
||||
if (user) {
|
||||
dispatch(whois(user, server));
|
||||
}
|
||||
},
|
||||
|
||||
away({ dispatch, server }, message) {
|
||||
dispatch(away(message, server));
|
||||
},
|
||||
|
||||
help({ dispatch, server, channel }) {
|
||||
dispatch(inform(help, server, channel));
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue