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([
|
var serverActions = Reflux.createActions([
|
||||||
'connect',
|
'connect',
|
||||||
'disconnect',
|
'disconnect',
|
||||||
|
'setNick',
|
||||||
'load'
|
'load'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -22,4 +23,11 @@ serverActions.disconnect.preEmit = function(server) {
|
|||||||
socket.send('quit', { server: server });
|
socket.send('quit', { server: server });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
serverActions.setNick.preEmit = function(nick, server) {
|
||||||
|
socket.send('nick', {
|
||||||
|
server: server,
|
||||||
|
new: nick
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = serverActions;
|
module.exports = serverActions;
|
@ -1,9 +1,11 @@
|
|||||||
var React = require('react');
|
var React = require('react');
|
||||||
var Reflux = require('reflux');
|
var Reflux = require('reflux');
|
||||||
|
|
||||||
|
var channelStore = require('../stores/channel');
|
||||||
var selectedTabStore = require('../stores/selectedTab');
|
var selectedTabStore = require('../stores/selectedTab');
|
||||||
var messageActions = require('../actions/message');
|
var messageActions = require('../actions/message');
|
||||||
var channelActions = require('../actions/channel');
|
var channelActions = require('../actions/channel');
|
||||||
|
var serverActions = require('../actions/server');
|
||||||
var tabActions = require('../actions/tab');
|
var tabActions = require('../actions/tab');
|
||||||
|
|
||||||
function dispatchCommand(cmd, channel, server) {
|
function dispatchCommand(cmd, channel, server) {
|
||||||
@ -28,6 +30,21 @@ function dispatchCommand(cmd, channel, server) {
|
|||||||
messageActions.send('\x01ACTION ' + params.slice(1).join(' ') + '\x01', channel, server);
|
messageActions.send('\x01ACTION ' + params.slice(1).join(' ') + '\x01', channel, server);
|
||||||
}
|
}
|
||||||
break;
|
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) {
|
if (e.which === 13 && e.target.value) {
|
||||||
var tab = this.state.selectedTab;
|
var tab = this.state.selectedTab;
|
||||||
|
|
||||||
if (e.target.value.charAt(0) === '/') {
|
if (e.target.value[0] === '/') {
|
||||||
dispatchCommand(e.target.value, tab.channel, tab.server);
|
dispatchCommand(e.target.value, tab.channel, tab.server);
|
||||||
} else {
|
} else {
|
||||||
messageActions.send(e.target.value, tab.channel, tab.server);
|
messageActions.send(e.target.value, tab.channel, tab.server);
|
||||||
|
@ -205,6 +205,13 @@ var channelStore = Reflux.createStore({
|
|||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getTopic: function(server, channel) {
|
||||||
|
if (channels[server] && channels[server][channel]) {
|
||||||
|
return channels[server][channel].topic || null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
getState: function() {
|
getState: function() {
|
||||||
return channels;
|
return channels;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ var messageStore = Reflux.createStore({
|
|||||||
to: channel,
|
to: channel,
|
||||||
message: message,
|
message: message,
|
||||||
type: 'info'
|
type: 'info'
|
||||||
}, channel);
|
}, channel || server);
|
||||||
this.trigger(messages);
|
this.trigger(messages);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -28,6 +28,11 @@ var serverStore = Reflux.createStore({
|
|||||||
tabActions.select(server);
|
tabActions.select(server);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setNick: function(nick, server) {
|
||||||
|
servers[server].nick = nick;
|
||||||
|
this.trigger(servers);
|
||||||
|
},
|
||||||
|
|
||||||
load: function(storedServers) {
|
load: function(storedServers) {
|
||||||
_.each(storedServers, function(server) {
|
_.each(storedServers, function(server) {
|
||||||
servers[server.address] = 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) {
|
func (u User) RemoveServer(address string) {
|
||||||
go db.Update(func(tx *bolt.Tx) error {
|
go db.Update(func(tx *bolt.Tx) error {
|
||||||
serverID := []byte(u.UUID + ":" + address)
|
serverID := []byte(u.UUID + ":" + address)
|
||||||
|
@ -133,6 +133,16 @@ func handleWS(ws *websocket.Conn) {
|
|||||||
if irc, ok := session.getIRC(data.Server); ok {
|
if irc, ok := session.getIRC(data.Server); ok {
|
||||||
irc.Privmsg(data.To, data.Message)
|
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…
x
Reference in New Issue
Block a user