Added /nick and /topic
This commit is contained in:
parent
ad4354adfc
commit
92c316e9ea
@ -5,6 +5,7 @@ var socket = require('../socket');
|
||||
var serverActions = Reflux.createActions([
|
||||
'connect',
|
||||
'disconnect',
|
||||
'setNick',
|
||||
'load'
|
||||
]);
|
||||
|
||||
@ -22,4 +23,11 @@ serverActions.disconnect.preEmit = function(server) {
|
||||
socket.send('quit', { server: server });
|
||||
};
|
||||
|
||||
serverActions.setNick.preEmit = function(nick, server) {
|
||||
socket.send('nick', {
|
||||
server: server,
|
||||
new: nick
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = serverActions;
|
@ -1,9 +1,11 @@
|
||||
var React = require('react');
|
||||
var Reflux = require('reflux');
|
||||
|
||||
var channelStore = require('../stores/channel');
|
||||
var selectedTabStore = require('../stores/selectedTab');
|
||||
var messageActions = require('../actions/message');
|
||||
var channelActions = require('../actions/channel');
|
||||
var serverActions = require('../actions/server');
|
||||
var tabActions = require('../actions/tab');
|
||||
|
||||
function dispatchCommand(cmd, channel, server) {
|
||||
@ -28,6 +30,21 @@ function dispatchCommand(cmd, channel, server) {
|
||||
messageActions.send('\x01ACTION ' + params.slice(1).join(' ') + '\x01', channel, server);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'topic':
|
||||
var topic = channelStore.getTopic(server, channel);
|
||||
if (topic) {
|
||||
messageActions.inform(topic, server, channel);
|
||||
} else {
|
||||
messageActions.inform('No topic set', server, channel);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'nick':
|
||||
if (params[1]) {
|
||||
serverActions.setNick(params[1], server);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,7 +63,7 @@ var MessageInput = React.createClass({
|
||||
if (e.which === 13 && e.target.value) {
|
||||
var tab = this.state.selectedTab;
|
||||
|
||||
if (e.target.value.charAt(0) === '/') {
|
||||
if (e.target.value[0] === '/') {
|
||||
dispatchCommand(e.target.value, tab.channel, tab.server);
|
||||
} else {
|
||||
messageActions.send(e.target.value, tab.channel, tab.server);
|
||||
|
@ -205,6 +205,13 @@ var channelStore = Reflux.createStore({
|
||||
return [];
|
||||
},
|
||||
|
||||
getTopic: function(server, channel) {
|
||||
if (channels[server] && channels[server][channel]) {
|
||||
return channels[server][channel].topic || null;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
getState: function() {
|
||||
return channels;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ var messageStore = Reflux.createStore({
|
||||
to: channel,
|
||||
message: message,
|
||||
type: 'info'
|
||||
}, channel);
|
||||
}, channel || server);
|
||||
this.trigger(messages);
|
||||
},
|
||||
|
||||
|
@ -28,6 +28,11 @@ var serverStore = Reflux.createStore({
|
||||
tabActions.select(server);
|
||||
},
|
||||
|
||||
setNick: function(nick, server) {
|
||||
servers[server].nick = nick;
|
||||
this.trigger(servers);
|
||||
},
|
||||
|
||||
load: function(storedServers) {
|
||||
_.each(storedServers, function(server) {
|
||||
servers[server.address] = server;
|
||||
|
@ -123,6 +123,22 @@ func (u User) AddChannel(channel Channel) {
|
||||
})
|
||||
}
|
||||
|
||||
func (u User) SetNick(nick, address string) {
|
||||
go db.Update(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket([]byte("Servers"))
|
||||
id := []byte(u.UUID + ":" + address)
|
||||
var server Server
|
||||
|
||||
json.Unmarshal(b.Get(id), &server)
|
||||
server.Nick = nick
|
||||
|
||||
data, _ := json.Marshal(server)
|
||||
b.Put(id, data)
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (u User) RemoveServer(address string) {
|
||||
go db.Update(func(tx *bolt.Tx) error {
|
||||
serverID := []byte(u.UUID + ":" + address)
|
||||
|
@ -133,6 +133,16 @@ func handleWS(ws *websocket.Conn) {
|
||||
if irc, ok := session.getIRC(data.Server); ok {
|
||||
irc.Privmsg(data.To, data.Message)
|
||||
}
|
||||
|
||||
case "nick":
|
||||
var data Nick
|
||||
|
||||
json.Unmarshal(req.Request, &data)
|
||||
|
||||
if irc, ok := session.getIRC(data.Server); ok {
|
||||
irc.Nick(data.New)
|
||||
session.user.SetNick(data.New, data.Server)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user